Php Laravel-通过值雄辩地获取子模型

Php Laravel-通过值雄辩地获取子模型,php,laravel,eloquent,Php,Laravel,Eloquent,我和模特有关系 class ModelOne extends Model { public function modelsTwo() { return $this->hasMany(ModelTwo::class, 'modeltwo_id'); } } 是否可以基于ModelTwo的属性从ModelOne检索ModelTwo 比如说: $mone = ModelOne::find($id); $mtwo = $mone->modelsTwo->

我和模特有关系

class ModelOne extends Model
{
    public function modelsTwo() {
        return $this->hasMany(ModelTwo::class, 'modeltwo_id');
    }
}
是否可以基于ModelTwo的属性从ModelOne检索ModelTwo

比如说:

$mone = ModelOne::find($id);
$mtwo = $mone->modelsTwo->findByName('foo');

因此$mtwo将拥有ModelOne中名为“foo”的ModelTwo

是的,如果您将其作为属性调用,
$mone->modelsTwo
它将返回所有
ModelTwo
记录作为
集合
,如果您将其作为函数调用,
$mone->modelsTwo()
它将返回一个查询生成器,两者都有
where()
可用于按特定名称查找记录的函数

$mone = ModelOne::find($id);
$mtwo = $mode->modelsTwo->where('name', 'foo')->first();

// or
$mtwo = $mode->modelsTwo()->whereName('foo')->first();

如果您想提取所有记录,只需将其作为属性调用,但如果您想执行复杂查询,则将其作为函数调用。

是的,如果您将其作为属性调用
$mone->modelsTwo
它将返回所有
ModelTwo
记录作为
集合,如果您将其作为函数调用
$mone->modelsTwo()
它将返回一个查询生成器,两者都具有
where()
函数,您可以使用该函数按特定名称查找记录

$mone = ModelOne::find($id);
$mtwo = $mode->modelsTwo->where('name', 'foo')->first();

// or
$mtwo = $mode->modelsTwo()->whereName('foo')->first();

如果要提取所有记录,只需将其作为属性调用,但如果要进行复杂查询,请将其作为函数调用。

谢谢,这正是我要查找的!有点晚了,但是如果你想在一个有很多模型的模型中找到更深的东西,结果会怎样呢?谢谢你,这正是我想要的!有点晚了,但是如果你想在一个有很多模型的模型中找到一些东西,结果会怎样呢?