【发布时间】:2020-07-03 21:12:29
【问题描述】:
我有两张桌子。 codes 和 translations。
代码表
id | name
---|------
1 | A99
翻译表
id | code_id | language_code | copy
---|---------|---------------|------
1 |1 |en | Heart Disease
2 |1 |fr | Sning Nat
代码模型
class Code
{
function translation() // for default lanuage
{
return $this->hasOne(Translation::class, 'code_id')->where('language_code', 'en);
}
}
查询
$codes = Codes::with(['translation' => function($query){
$query->where('copy', 'like', '%hltad la loq%');
}]);
这应该什么也不返回,但它会返回所有没有翻译的代码。
换句话说,我只想在后台执行此查询。
select codes.*, translations.copy from codes
inner join translations ON codes.id = translations.code_id
where translations.language_code='en'
and translations.copy like '%hltad la loq%'
【问题讨论】:
-
这能回答你的问题吗? Laravel where on relationship object
-
不,这个问题与那个无关
-
我相信确实如此。您没有正确使用 Laravel Eloquent 代码(带有“with”并在其中执行子查询的部分),它在那里显示了应该如何完成。
-
解决方案是什么?
-
您的问题和所需 SQL 查询的唯一解决方案是使用 DB::raw/DB::query,因为 Eloquent 使用 eloquent 模型运行,而不是来自不同列的分类集合表。