2016-09-29 4 views
2

Я написал свой sqlquery в workbench сначала, прежде чем перевести его на код laravel, и я могу подтвердить это. Вот мой SQL-запрос написан на верстакеLaravel whereRaw не возвращает ничего

SET @info = 'hello'; 

SELECT device_type_id 
FROM arecibo.device_type_mappings 
WHERE @info LIKE concat('%', name , '%') COLLATE utf8_unicode_ci; 

Я хочу прямо сейчас преобразовать это код, но у меня возникают проблемы, как это ничего не возвращаются обратно. У меня есть googled, чтобы увидеть, что я могу пропустить, но безрезультатно я ничего не мог найти. Вот моя попытка код:

$deviceTypeId = DB::table('device_type_mappings') 
     ->select('device_type_id') 
     ->whereRaw('? LIKE concat(\'%\', name , \'%\') COLLATE utf8_unicode_ci;', [$sysInfo]) 
     ->get(); 

, если это возможно, я хотел бы использовать эту модель, но она жаловалась, что не было никакого выбора метода подвергается.

Я использую Laravel 5,3

+0

Проверьте журналы laravel и журналы mysql. Чтобы быть абсолютно честным, я не вижу ничего явно неправильного в вашем запросе. Единственное, что кажется неправильным, это ';' в конце 'COLLATE utf8_unicode_ci', вам это не нужно. – Andrew

+0

Замените '-> get' с' -> toSql() 'дампом это значение и сравните с тем, что вы ожидали, и добавьте его к этому вопросу, если вам нужна дополнительная помощь. –

ответ

0

Попробуйте удалить точку с запятой из вашего «где» заявления, если это вставляется в запрос, порожденный Laravel, то он может и не быть в состоянии запустить его на всех.

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 
    } 
} 
Смежные вопросы