Laravel Eloquent链式方法返回true而不是模型

时间:2015-10-16 22:13:20

标签: php laravel laravel-5 eloquent

为什么$cv在这种情况下

$cv = Cv::findOrFail($id)->fill($request->all());
$cv->save();
var_dump($cv);

返回模型(因此我可以访问$cv->id

,在这种情况下

$cv = Cv::findOrFail($id)->fill($request->all())->save();
var_dump($cv);

只返回true

2 个答案:

答案 0 :(得分:3)

我对类似的东西感到困惑。方法fill()和create()都创建并返回一个新模型。在使用它之前,您需要先处理模型。

save()方法总是返回boolean。

所以在第二种情况下,正在创建模型,并在该新模型上调用save(检查数据库以确保),但是您无法访问它。

虽然它不那么漂亮,但第一种情况是你应该如何创建/填充模型。

答案 1 :(得分:0)

$cv = Cv::findOrFail($id)->fill($request->all());

此处,您的上一个链式方法fill会返回一个模型对象,该对象已分配给您的变量$cv

$cv->save();

这会返回boolean但您尚未将其分配给$cv,因此您的$cv变量仍然与第一行(即模型)相同。 / p>

在下一个例子中,

$cv = Cv::findOrFail($id)->fill($request->all())->save();

您的上一个链式方法save返回一个布尔值,该布尔值已分配给您的变量$cv