我在我的应用程序中使用php slim3 fraemwork和eloquent orm。 我一直困惑于雄辩的关系......
我想用创建关系填充我的对象
我们说我有公司和用户模型
用户具有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重新获取它。 创建后是否有办法让相关用户返回公司?