gpt4 book ai didi

php - 如何在 Eloquent 中创建后立即加载关系

转载 作者:行者123 更新时间:2023-12-05 05:22:59 24 4
gpt4 key购买 nike

我在我的应用程序中使用 php slim3 fraemwork 和 eloquent orm。我对 Eloquent 关系加载感到困惑..

我想用创建关系填充我的对象

假设我有一个 Company 和 User 模型User 有 company 方法,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();

但我已经拥有我需要的所有数据 - 无需再次从数据库中重新获取它。有没有一种方法可以在创建后立即返回公司和相关用户?

最佳答案

我知道这个答案真的很老,但我在搜索类似的东西时偶然发现了这个......

我认为最好的方法是使用惰性预加载,使用 load()loadMissing() (如果您只想在它们尚未加载时加载)。

因此,在您的示例中,您可以:

return $company->load('users');

关于php - 如何在 Eloquent 中创建后立即加载关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39105911/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com