我想检查模型是否已使用isDirty方法更改,但始终返回false.
这是我的代码:
if (!is_null($partnersData)) {
foreach ($partnersData as $partnerData) {
$partner = Partner::find($partnerData['partner_id']);
$partner->update($partnerData);
if($partner->isDirty()){
dd('true');
}
}
}
Run Code Online (Sandbox Code Playgroud) 我是 Laravel 的新手。我正在尝试做的如下:
我的表单中有一些字段,例如TITLE, DESCRIPTION。
TITLE字段在数据库中是唯一的。
这就是我为更新我的价值观所做的事情。
$product = Product::find($id);
$product->title = $request->title;
$product->description = $request->description;
$product->save();
Run Code Online (Sandbox Code Playgroud)
但这会产生错误(该值已存在),因为我的TITLE字段是唯一的。
我想要的只是在TITLE值发生更改时更新我的TITLE,否则更新相同的值但更新其他字段。谢谢
有没有一种简单的方法让Eloquent save方法检查一行是否实际发生了变化?类似affected_rows的口才?
我发现的唯一解决方法是来自Laravel Eloquent更新,只要进行了更改:
$user = Auth::user();
$timestamp = $user->updated_at;
$user->title = $request->input('title');
....
$user->save();
if($timestamp == $user->updated_at){
// row was not updated.
}
Run Code Online (Sandbox Code Playgroud)
但是,如果不需要$timestep变量和检查,这可能会更短吗?我不想在每个控制器中重复那个逻辑.
我正在寻找这样的东西:
$user = Auth::user();
$user->title = $request->input('title');
....
if($user->save()){
// row was updated.
}
Run Code Online (Sandbox Code Playgroud)
但是,这并不因为工作$user->save的回报true在这两种情况下.还有另外一种方法吗?
我在 Laravel 5 中工作,我有一个模块,用户可以在其中更新学生的信息,为此用户有一个包含当前数据的预加载表单,他可以修改他想要的字段。然后,在控制器中我做:
$perfil->update(Input::all())
Run Code Online (Sandbox Code Playgroud)
这很好用。所以我的问题是:有没有办法获取已更新字段的名称?