このコード部分を問題なく何度も使用しています。しかし今回は$ successがnullを返し、私は理解できませんでした。私はデータベースをチェックすると、私はユーザー1が更新されて参照してください。それが節約されているので、充てん可能な問題はありません。私もsave()関数を試しました。私は何が欠けていますか?手伝ってくれてありがとう。Laravelはデータの保存または更新時にnullを返します
(Laravelのバージョン5.2.45)
$user = User::find(1);
$user->firstname = $request->firstname;
$user->lastname = $request->lastname;
$success= $user->update(); // Database update is successful
dd($success); // But return null
Userモデル
<?php
namespace App;
use App\Presenters\UserPresenter;
use App\Services\Logging\UserActivity\Activity;
use App\Support\Authorization\AuthorizationUserTrait;
use App\Support\Enum\UserStatus;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Auth\Passwords\CanResetPassword;
use Illuminate\Contracts\Auth\Authenticatable as AuthenticatableContract;
use Illuminate\Contracts\Auth\Access\Authorizable as AuthorizableContract;
use Illuminate\Contracts\Auth\CanResetPassword as CanResetPasswordContract;
use Zizaco\Entrust\Traits\EntrustUserTrait;
class User extends Model implements AuthenticatableContract, AuthorizableContract, CanResetPasswordContract
{
use CanResetPassword, AuthorizationUserTrait;
/**
* The database table used by the model.
*
* @var string
*/
protected $table = 'users';
protected $dates = ['last_login', 'birthday'];
/**
* The attributes that are mass assignable.
*
* @var array
*/
protected $guarded = [];
/**
* The attributes excluded from the model's JSON form.
*
* @var array
*/
protected $hidden = ['password', 'remember_token'];
public function items()
{
return $this->hasMany('App\Item');
}
/**
* Always encrypt password when it is updated.
*
* @param $value
* @return string
*/
public function setPasswordAttribute($value)
{
$this->attributes['password'] = bcrypt($value);
}
public function gravatar()
{
$hash = hash('md5', strtolower(trim($this->attributes['email'])));
return sprintf("//www.gravatar.com/avatar/%s", $hash);
}
public function isUnconfirmed()
{
return $this->status == UserStatus::UNCONFIRMED;
}
public function isActive()
{
return $this->status == UserStatus::ACTIVE;
}
public function isBanned()
{
return $this->status == UserStatus::BANNED;
}
public function city()
{
return $this->belongsTo(City::class, 'city_id');
}
public function activities()
{
return $this->hasMany(Activity::class, 'user_id');
}
public function getRememberToken()
{
return $this->remember_token;
}
public function setRememberToken($value)
{
$this->remember_token = $value;
}
public function getRememberTokenName()
{
return 'remember_token';
}
public function getAuthIdentifier()
{
return $this->getKey();
}
public function getAuthpassword()
{
return $this->password;
}
public function getAuthIdentifierName()
{
return $this->getKeyName();
}
public function verification()
{
return $this->hasOne('App\Verification');
}
}
更新質問(新TRY):
私はちょうど機能を更新すると、空のコントローラを試してみました。私はまだ失敗する。
UserController.php
<?php
namespace App\Http\Controllers;
use App\User;
use Auth;
use Illuminate\Http\Request;
class UserController extends Controller
{
public function getEdit()
{
$user = User::find(1);
return view('user.editprofile', compact('user'));
}
public function postEdit(Request $request)
{
$user = User::find(1);
$user->firstname = $request->firstname;
$user->lastname = $request->lastname;
if($user->update())
{
echo "Success";
}
echo "Fail"; // Print "Fail" but update was successful.
}
}
'$ user-> update()'はfalseを返しますが、更新は成功しましたか?奇妙な! –
はい、Sanzeeb、それが奇妙な理由です。私は毎回成功の方法を使用し、このような問題は決してありませんでした。また、ユーザーの電話番号を更新するControllerには別の機能があり、$ successは問題なくtrueを返します。同じコード、働いているもの、そうでないもの。 –
ソースコードを見ましたが、NULLを返すことはオプションではありません(モデル更新メソッドをオーバーライドしない限り) –