laravel 中的 model->name 和 model() 有啥区别?

Posted

技术标签:

【中文标题】laravel 中的 model->name 和 model() 有啥区别?【英文标题】:what is difference between model->name and model() in laravel?laravel 中的 model->name 和 model() 有什么区别? 【发布时间】:2021-07-27 07:55:43 【问题描述】:

我想知道 laravel eloquent conisgnment->runsheet->name$consignment->runsheet()->name 的区别

我注意到存在性能差异,但为什么呢?我还注意到,当我尝试获取 $consignment->runsheet->name 这样的关系属性时,它工作正常,但 $consignment->runsheet()->name 不起作用

【问题讨论】:

【参考方案1】:

第一个

$consignment->runsheet

检索一个集合(因此它已经对 DB 进行了查询)

第二个

$consignment->runsheet()

是一个查询构建器(尚未进行数据库查询),您可以像任何查询构建器实例一样链接它

所以如果你想从第二个获取属性,你可以这样做:

$consignment->runsheet()->first()->name;

$consignment->runsheet()->value('name');

【讨论】:

以上是关于laravel 中的 model->name 和 model() 有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 5.3 $model->save() 值始终为空,但是批量分配有效

模型中的 Laravel 动态可填充

laravel中使用model怎样得到指定字段信息

laravel 权限管理 常用命令

在 laravel 中使用关系创建模型

Laravel Model 的 fillable (白名单)与 guarded (黑名单)