Laravel关系在急切加载时显示为空。但是,当正常访问该关系时,它可以工作。
ArrayList
当我使用以下内容时,合同关系返回null。
class Student extends Model
{
use SoftDeletes;
public $incrementing = false;
protected $primaryKey = 'id'; // or null
protected $guarded = [];
public function document()
{
return $this->hasOne('App\Model\Document');
}
public function contact()
{
return $this->hasOne('App\Model\Contact');
}
}
但是当我执行以下操作时它会起作用。可能是什么原因造成的?
Student::with('contact')->get()
答案 0 :(得分:0)
Student::with('contact')->get();
返回Collection
个实例中的Student
,您可以循环并访问它们contact
:
$students = Student::with('contact')->get();
foreach($students AS $student){
dd($student->contact);
// Can be `null` or an instance of `Contact`
}
调用Student::findOrFail($id);
时,会得到一个Student
的实例,可以直接访问contact
:
$student = Student::with('contact')->findOrFail($id);
dd($student->contact);
// Again, can be `null` or an instance of `Contact`
with()
子句很容易加载,在您尝试访问$student->contact
之前不会执行任何操作,但是由于hasOne()
的性质,它可能是{{1} }。