【问题标题】:Laravel Eloquent using where patternLaravel Eloquent 使用 where 模式
【发布时间】:2016-01-27 17:47:06
【问题描述】:

我有这个 PostgreSQL 查询,它检查一个值是否匹配表中的字符串模式之一:

SELECT * FROM table WHERE 'value' LIKE column

我想在 Laravel 5.1 中使用 Eloquent 做到这一点。但是做类似的事情:

$prefix = 'value';
Model::where($prefix, 'LIKE', column)->firstOrFail();

返回错误。显然 where ($prefix) 的第一个参数将始终被视为 Laravel 中的列名(放在双引号之间)。有没有办法解决这个问题或有更好的方法来解决这个问题?

【问题讨论】:

    标签: php postgresql eloquent laravel-5.1


    【解决方案1】:

    使用原始:

    Model::whereRaw("'{$prefix}' LIKE column")->firstOrFail();
    

    【讨论】:

      【解决方案2】:

      替换:

      Model::where($prefix, 'LIKE', "'%' || column_name || '%'")->firstOrFail();
      

      与:

      Model::where('.$prefix.', 'LIKE', "'%' || column_name || '%'")->firstOrFail();
      

      【讨论】:

      • 仍然出现错误...现在我得到了zero-length delimited identifier at or near """" LINE 1: ..." where "table"."deleted_at" is null and ""."$prefi... ^ (SQL: select * from "table" where "table"."deleted_at" is null and ""."$prefix"."" LIKE '%' || column_name || '%' limit 1)
      猜你喜欢
      • 2014-08-14
      • 2021-07-12
      • 2018-02-21
      • 2017-08-30
      • 2020-07-09
      • 1970-01-01
      • 2013-06-04
      • 2020-01-01
      相关资源
      最近更新 更多