构建Laravel查询按关系字段添加where语句

时间:2015-10-25 11:04:54

标签: php laravel

我无法构建简单的Laravel查询。 我有translation个类别(translation.category_idcategory.id的外键)。 Moroever类别也有属性is_technical

我需要的是: - 获取翻译所在的所有翻译类别.is_technical = 1。

目前我正在接受此查询:

 $match = ['lang1_code' => $langfrom, 'lang2_code' => $langto];
 $translation = Translation::where($match)->orderByRaw("RAND()")->take(4)->get();

但是这个查询并没有加入类别(我在我的数据库和我的模型中都有关系)。那么如何加入类别并设置is_Technical = 1?

我认为这是一个基本问题,但我是Laravel的新手,我在文档中找不到答案。

1 个答案:

答案 0 :(得分:2)

你需要哪里有。有关详细信息,请参阅Laravel文档 http://laravel.com/docs/5.1/eloquent-relationships

以下是一个示例,请更正您的型号名称。

//Translation.php
public function category() {
    return $this->belongsTo('Category', 'category_id');
}

// query
$translation = Translation::whereHas('category', function($q) {
    $q->where('is_technical', '=', 1);
})->where($match)->orderByRaw("RAND()")->take(4)->get();