PHP: Laravel 如何急切加载查找方法

标签 php laravel eager-loading

我有一个模型 Users,它有很多 Pages,我想预先加载下面的方法,以便它只返回一个用户,所有页面都预先加载,我该怎么做。

$user = User::find(1);
$pages = $user->pages();
foreach($pages as $page) {
  var_dump($page->name);
}

我试过但没有用,它会加载所有内容:

$user = User::with('Pages')->get();
$pages = $user->pages();

最佳答案

去掉括号。

$user = User::find(1);
$pages = $user->pages;
foreach($pages as $page) {
    var_dump($page->name);
}

如果你想预先加载它,那么使用 with 方法并传递正确的参数,这将是你的关系方法的名称:

$user = User::with('pages')->find(1);
foreach($user->pages as $page) {
    var_dump($page->name);
}

关于PHP: Laravel 如何急切加载查找方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34617150/

相关文章:

c# - .NET Core/EF Core 2.0 升级后急切加载 "No coercion operator is defined between types"

ruby-on-rails - ActiveRecord 急切加载多个 belongs_to 关联

php - 计算 Laravel 中的远程关系总数(急切加载?)

来自函数的 PHP 图像

php - 用户@localhost 的访问被拒绝

php - 无法将 JSON 数据正确加载到 Spinner 中

php - 火箭手。部署后如何在不同的服务器上执行命令?

php - 如何在 Laravel 5.2 中使用 HipsterJazzbo/Landlord 包 - 单数据库 Multi-Tenancy - ?

php - 在 PHP 中从具有大数据的数据库表中获取数据的等待时间更长

php - 在 laravel 中全局缓存表值