首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于BelongsTo的Laravel 4急切负载约束

基于BelongsTo的Laravel 4急切负载约束
EN

Stack Overflow用户
提问于 2014-08-19 14:29:48
回答 1查看 210关注 0票数 1

我有两个模特..。飞机和行动:

在飞机上:

代码语言:javascript
复制
public function movements() {
    return $this->hasMany('Movement');
}

在运动中:

代码语言:javascript
复制
public function aircraft() {
    return $this->belongsTo('Aircraft');
}

桌子运动:

代码语言:javascript
复制
Schema::create('movements', function($table)
    {
        $table->increments('id');
        $table->boolean('flag_visible')->default(1);
        $table->integer('aircraft_id')->nullable()->default(NULL);
        $table->timestamps();
    });

台式飞机:

代码语言:javascript
复制
Schema::create('aircrafts', function($table)
    {
        $table->increments('id');
        $table->string('identifier');
        $table->timestamps();
    });

现在我要选择带有标识符=10的飞机的所有运动:

代码语言:javascript
复制
$movements = Movement::with(array(
            'aircraft' => function($query) {
                $query->where('identifier', 'like', '%10%');
            }
        ));

我只有一个aircraft_id的移动记录,其中标识符为%10%。但是我得到了所有的运动记录,只有有正确标识符的人才有“飞机”的关系。但是我想要一个只有一条记录的数组,只有一个有正确标识符的数组。这里怎么了?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-08-19 14:35:39

with()创建一个单独的查询,用于一次检索所有相关值(急切加载),而不是按需要(延迟加载)检索。

您希望在移动查询上添加一个约束,因此应该使用whereHas(),如下所示:

代码语言:javascript
复制
$movements = Movement::whereHas('aircraft', function($q)
{
    $q->where('identifier', 'like', '%10%');

})->get();
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25386055

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档