Laravel - Eloquent按价值获得子模型

时间:2016-05-27 20:22:50

标签: 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->findByName('foo');

所以$ mtwo将拥有ModelOne的ModelTwo,名称='foo'

1 个答案:

答案 0 :(得分:3)

是的,如果您将其称为属性$mone->modelsTwo,它会将所有ModelTwo条记录作为Collection返回,如果您将其称为函数$mone->modelsTwo(),它将会返回一个查询构建器,它们都有where()函数,您可以使用该函数按特定名称查找记录。

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

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

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