Laravel ORM方法与属性

时间:2014-06-27 13:33:03

标签: php laravel-4

在处理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和东西),您必须在属性具有不可变结果集时使用该方法。有谁知道这是对的吗?

1 个答案:

答案 0 :(得分:0)

哦,天哪,4 年后。

基本上 ->securityQuestions()Eloquent collection->securityQuestionsLaravel collection

前者你可以一直查询数据库,后者不能。对前者的转换会命中数据库,后者不会。

是的,我是对的:

<块引用>

我的猜测是,为了从数据库中检索内容(并保持链接 wheres 和内容),您必须使用该方法,而该属性具有不可变的结果集。有没有人知道这是否正确?