我先在workbench中编写了我的sqlquery,然后再将其移到laravel代码中,我可以确认这是有效的。这是我在工作台中编写的SQL查询
SET @info = 'hello';
SELECT device_type_id
FROM arecibo.device_type_mappings
WHERE @info LIKE concat('%', name , '%') COLLATE utf8_unicode_ci;
我想现在将其转换为代码,但由于没有返回任何内容而遇到麻烦。我搜索了一下,看看我可能会遗漏什么,但无济于事,我找不到任何东西。这是我尝试过的代码:
$deviceTypeId = DB::table('device_type_mappings')
->select('device_type_id')
->whereRaw('? LIKE concat(\'%\', name , \'%\') COLLATE utf8_unicode_ci;', [$sysInfo])
->get();
如果可能我想使用该模型,但它抱怨没有暴露的选择方法。
我正在使用laravel 5.3
答案 0 :(得分:0)
尝试从'where'语句中删除分号,如果将其插入到Laravel生成的查询中,那么它可能根本无法运行它。
答案 1 :(得分:0)
我认为在您的模型中使用它是没有问题的。
class Any extends Model
{
protected $table = 'device_type_mappings';
public static function getSomething()
{
$column = 'info';
$a = self::whereRaw('? LIKE CONCAT(\'%\', name, \'%\') COLLATE utf8_unicode_ci', [$column])->select('device_type_id');
die($a->toSql());
//OUTPUT: select `device_type_id` from `device_type_mappings` where ? LIKE CONCAT('%', name, '%') COLLATE utf8_unicode_ci
}
}