Laravel哪里没有返回任何东西

时间:2016-09-29 10:16:35

标签: php laravel laravel-5

我先在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

2 个答案:

答案 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
    }
}