我怎样才能“在哪里”原始列(DB::raw)。 [拉拉维尔]

Posted

技术标签:

【中文标题】我怎样才能“在哪里”原始列(DB::raw)。 [拉拉维尔]【英文标题】:How can I "where" raw column(DB::raw). [LARAVEL] 【发布时间】:2019-08-14 08:42:42 【问题描述】:

我的目标,是为位置制作一个自动完成的输入文本。当我输入诸如“streetNo”、“城市”或“国家”之类的内容时,相关数据应返回 我刚刚创建了一个原始列“full_address”加入“streetNo”、“city”和“country”列。这是我的代码:

$searchAddress = $r->input('address'); //dynamic

$profile = DB::table('student')
    ->select(
        'students.id',
        'students.name',
        'students.class',
        'students.schedule',
        'inf.streetNo',
        'inf.city',
        'inf.country',
        DB::raw("(CONCAT(inf.streetNo,' ',inf.city,' ',inf.country)) AS full_address")
    )
    ->where('full_address', 'LIKE', "%$searchAddress%")
    ->join('informations AS inf', 'inf.student_id', 'students.id')
    ->get();

我尝试搜索“城市或国家/地区”等现有数据,但未返回任何数据。我怀疑数据“在哪里”有问题。 问题是我们可以像上面显示的代码那样“在哪里”临时列,如“full_address 列”吗?因为我尝试了该代码并且实际上没有返回数据 需要您的帮助,先生们..

【问题讨论】:

你必须合并CASE。检查this 答案以获得想法。 当您说不工作时,查询是否失败,或者您没有获得您期望的数据,如果是第二种情况,您可以分享一些您希望获得但无法相处的数据查询? @apokryfos 已经编辑了我的问题先生。你能不能再读一遍,谢谢先生。 @Tpojka 感谢您的回复先生。先生,我没有使用“CASE WHEN”,我只是使用“CONCAT”。 我告诉你我将如何解决这个问题。再次,检查我在网站上为您找到的两个链接并研究一下。你不能搜索不存在的东西。并且临时列不存在。您应该制作/返回一个以检查比较部分。但是你可以只返回符合我建议你做的那种情况的行。您应该首先使用原始查询尝试它,在您有工作查询之后,然后再尝试转换为 eloquent 查询构建器。 ->where('full_address', 'LIKE', "%$searchAddress%") 不起作用,但先尝试原始查询。 【参考方案1】:

找到解决办法了!!

我尝试了不同的方法来“在哪里” 原始列但没有返回数据,所以我假设这些代码 ->where('full_address', 'LIKE', "%$searchAddress%") 我认为是语法错误吗。

我们不能对原始列使用“where 子句”,例如“full_address”。 所以我所做的是,我不再创建诸如“full_address”之类的原始列,而是直接“在哪里” DB::Raw 查看我的最终代码和工作代码:

$searchAddress = $r->input('address'); //dynamic

$profile = DB::table('student')
    ->select(
        'students.id',
        'students.name',
        'students.class',
        'students.schedule',
        'inf.streetNo',
        'inf.city',
        'inf.country'
    )
    ->where(DB::raw("CONCAT(inf.streetNo,' ',inf.city,' ',inf.country)), 'LIKE', "%$searchAddress%")
    ->join('informations AS inf', 'inf.student_id', 'students.id')
    ->get();

【讨论】:

以上是关于我怎样才能“在哪里”原始列(DB::raw)。 [拉拉维尔]的主要内容,如果未能解决你的问题,请参考以下文章

Laravel减少列值而不是负值

由于选择 DB:raw 和 GROUP BY 的非聚合列导致 Laravel 语法错误

我怎样才能做一个不同的总和?

绑定参数到 Db::raw laravel 查询

我怎样才能看到缩小代码的效果

我怎样才能得到2列collectionview