gpt4 book ai didi

laravel - 如何访问模型 hasMany Relation 与 where 条件?

转载 作者:行者123 更新时间:2023-12-03 06:30:03 25 4
gpt4 key购买 nike

我使用关系的条件/约束创建了一个模型游戏,如下所示:

class Game extends Eloquent {
// many more stuff here

// relation without any constraints ...works fine
public function videos() {
return $this->hasMany('Video');
}

// results in a "problem", se examples below
public function available_videos() {
return $this->hasMany('Video')->where('available','=', 1);
}
}

当像这样使用它时:

$game = Game::with('available_videos')->find(1);
$game->available_videos->count();

一切正常,因为角色是结果集合。

我的问题:

当我尝试在不急切加载的情况下访问它时

$game = Game::find(1);
$game->available_videos->count();

抛出异常,因为它显示“调用非对象上的成员函数 count()”。

使用

$game = Game::find(1);
$game->load('available_videos');
$game->available_videos->count();

工作正常,但对我来说似乎相当复杂,因为如果我不在关系中使用条件,我不需要加载相关模型。

我是不是错过了什么?如何确保在不使用预加载的情况下可以访问 available_videos?

对于任何感兴趣的人,我也在http://forums.laravel.io/viewtopic.php?id=10470上发布了这个问题

最佳答案

我认为这是正确的方法:

class Game extends Eloquent {
// many more stuff here

// relation without any constraints ...works fine
public function videos() {
return $this->hasMany('Video');
}

// results in a "problem", se examples below
public function available_videos() {
return $this->videos()->where('available','=', 1);
}
}

然后你必须

$game = Game::find(1);
var_dump( $game->available_videos()->get() );

关于laravel - 如何访问模型 hasMany Relation 与 where 条件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18520209/

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