我与模特之间有关系
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'
答案 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();
如果要拉取所有记录,只需将其称为属性,但如果要进行复杂查询,请将其称为函数。