为什么Laravel关系会阻止对查询构建器方法的调用?

时间:2014-08-11 12:28:57

标签: php orm laravel-4 eloquent

我想找到属于id = 1

用户的所有患者

这有效:

$data = Patient::where('user_id', '=', 1)
        ->with('method', 'images')->get()->toJson();

这不起作用:

$data = User::find(1)->patients->with('method', 'images')->get()->toJson();

它说:

Call to undefined method Illuminate\Database\Eloquent\Collection::with()

为什么这是错的?可以纠正吗?

3 个答案:

答案 0 :(得分:2)

您的代码无法正常工作的原因是所有Eloquent关系声明都会返回不同的结果,具体取决于您是尝试以属性还是以方法形式访问关系(使用()而不使用 ())。

// Return you chainable queries    
$query = User::find(1)->patients()->... 
// Return you collection of patients
$patientsCollection = User::find(1)->patients;

答案 1 :(得分:1)

尝试

User::find(1)->patients()->with('method', 'images')->get()->toJson();

答案 2 :(得分:0)

试试这个

$patient = New Patient;
$data = $patient->where('user_id','=',1)->with('method','images')->get()->toJson();