tro*_*gne 10 function foreign-key-relationship parentheses laravel
我在一个laravel教程中看到了这个:
Auth::user()->item;
Run Code Online (Sandbox Code Playgroud)
其中item是一个函数,在models\User.php中:
function item() { return $this->hasMany('Item', 'owner_id'); }
Run Code Online (Sandbox Code Playgroud)
其中Item是models\Item.php
那么为什么在调用item函数时不需要括号?喜欢:Auth::user()->item();
如果我把括号括起来,浏览器会变得疯狂并崩溃.
此外,如果我将Item.php重命名为Item2.php,将类Item重命名为Item2,我这样做hasMany('Item2', 'owner_id')
,它将无法工作.但为什么 ?'Item'来自哪里?
谢谢,
帕特里克
Laravel使用魔术函数__get
来处理任意属性.
这个电话Illuminate\Database\Eloquent\Model
的getAttribute
功能,检查模型的关系,如果有关系存在该名称返回相关的项目(S).
不需要括号,因为在请求属性时getAttribute
自动执行该函数.顺便说一句,您可以请求返回可以使用的查询构建器.items()
items
Auth::user()->item();