在处理Laravel的关系时,我经常使用这样的东西:
User::where(...)
->first()
->securityQuestions()
->take(2)
->orderBy(DB::raw('RAND()'))
->get();
请注意使用securityQuestions()
代替securityQuestions
否则会引发错误:
Missing argument 1 for Illuminate\Support\Collection::get()
现在,在其他部分我逃避使用:
User::where(...)
->first()
->securityQuestions
->contains(...)
请注意使用securityQuestions
代替securityQuestions()
。
我的猜测是,为了从数据库中检索内容(并保持链接wheres
和东西),您必须在属性具有不可变结果集时使用该方法。有谁知道这是对的吗?
答案 0 :(得分:0)
哦,天哪,4 年后。
基本上 ->securityQuestions()
是 Eloquent collection 而 ->securityQuestions
是 Laravel collection。
前者你可以一直查询数据库,后者不能。对前者的转换会命中数据库,后者不会。
是的,我是对的:
<块引用>我的猜测是,为了从数据库中检索内容(并保持链接 wheres 和内容),您必须使用该方法,而该属性具有不可变的结果集。有没有人知道这是否正确?