我有两个模特..。飞机和行动:
在飞机上:
public function movements() {
return $this->hasMany('Movement');
}在运动中:
public function aircraft() {
return $this->belongsTo('Aircraft');
}桌子运动:
Schema::create('movements', function($table)
{
$table->increments('id');
$table->boolean('flag_visible')->default(1);
$table->integer('aircraft_id')->nullable()->default(NULL);
$table->timestamps();
});台式飞机:
Schema::create('aircrafts', function($table)
{
$table->increments('id');
$table->string('identifier');
$table->timestamps();
});现在我要选择带有标识符=10的飞机的所有运动:
$movements = Movement::with(array(
'aircraft' => function($query) {
$query->where('identifier', 'like', '%10%');
}
));我只有一个aircraft_id的移动记录,其中标识符为%10%。但是我得到了所有的运动记录,只有有正确标识符的人才有“飞机”的关系。但是我想要一个只有一条记录的数组,只有一个有正确标识符的数组。这里怎么了?
发布于 2014-08-19 14:35:39
with()创建一个单独的查询,用于一次检索所有相关值(急切加载),而不是按需要(延迟加载)检索。
您希望在移动查询上添加一个约束,因此应该使用whereHas(),如下所示:
$movements = Movement::whereHas('aircraft', function($q)
{
$q->where('identifier', 'like', '%10%');
})->get();https://stackoverflow.com/questions/25386055
复制相似问题