where 从具有列外键的表中查询

Posted

技术标签:

【中文标题】where 从具有列外键的表中查询【英文标题】:where query from table with column foreign key 【发布时间】:2017-05-15 13:29:34 【问题描述】:

我有表列表和城市,列表有一个城市的关系。 有两个输入,第一个输入是查看列表名称,第二个输入是查看城市名称。 Listings 表有列名和city_id。 Cities 表具有列 ID 和名称。

目标是在城市输入中寻找列表。

当前查询如下所示

$listings = Listing::where('name', 'LIKE', '%'. $request->search. '%')->where('%'. $request->location. '%', 'LIKE', function($query)
            $query->where(DB::raw('cities.name'));
        )->paginate(10);

这给出了未知的错误列

SQLSTATE[42S22]: 找不到列: 1054 'where 子句'中的未知列'%city input%' (SQL: select count(*) as aggregate from listings where name LIKE %listing input% and %city input% LIKE(选择 * whereities.name 为空))

有什么办法解决这个问题吗?

【问题讨论】:

【参考方案1】:

我认为whereHas 是您所需要的。

假设你的关系被称为“城市”:

$listings = Listing::where('name', 'LIKE', '%' . $request->search . '%')
    ->whereHas('city', function($query) use($request) 
        $query->where('name', 'LIKE', '%' . $request->location . '%');
    )
    ->paginate(10);

【讨论】:

以上是关于where 从具有列外键的表中查询的主要内容,如果未能解决你的问题,请参考以下文章

如何添加一列外键的值?

如何从具有两个外键的表中访问列?

从具有三个外键的表中选择一个表[关闭]

查询带外键的表

如何在 SAP ASE Sybase 16 中从具有外键的表中删除行

EntityFramework db.where()查询符合条件数据主键的外键的外键 在括号里怎么写