【发布时间】:2016-08-23 16:01:29
【问题描述】:
我在我的应用程序中使用 php slim3 框架和 eloquent orm。 我对雄辩的关系加载感到困惑..
我想用创建时的关系填充我的对象
假设我有一个 Company 和 User 模型
用户有company 方法,公司也有users 方法。
两种方法描述正确
//User.php
company()
{
return $this->belongsTo('Company');
}
//Company.php
users()
{
return $this->hasMany('User');
}
我想在某个地方创建一个有用户的新公司
function doSomething(array $data)
{
$company= new Company();
//fill it
//...
$users = [];
foreach ($data['user_emails'] as $email)
{
$users[] = new User(['email' => $email]);
}
$company->users()->saveMany($users);
$company->save();
return $company();
}
$company = doSomething(['emails'] => ['foo@mail.com', 'buz@mail.com']);
//rely on build in to Model toString that uses json serialization
echo $company;
在此示例中,公司和关系将被保存 - 它有效 但在公司中,json 将只是公司 我也想和用户一起看到它
如果我已经有这家公司,我可以使用with
echo Company::query()->with('user')->get();
但我已经拥有我需要的所有数据 - 无需再次从 db 重新获取它。 有没有办法在创建后立即将公司与相关用户一起返回?
【问题讨论】:
标签: php eloquent relationship eager-loading