2016-09-29 8 views
2

実際にlaravelコードに移動する前に、まずワークベンチに自分のsqlqueryを書きました。ここに私のSQLクエリは、私は今、コードにこれを変換したいが、それは戻って何かを返すされていないなどのトラブルが生じています Laravel whereRaw何も返さない

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によって生成されたクエリに挿入されている場合、うまくすべてでそれを実行することができないかもしれない、あなたの「どこ」ステートメントからセミコロンを削除してくださいlaravel 5.3

+0

laravelログとmysqlログを確認します。正直言って私はあなたの質問に間違いがないとは思わない。正しくないと思われるのは、 'COLLATE utf8_unicode_ci'の最後にある'; 'だけです。あなたはそれを必要としません。 – Andrew

+0

' - > get'を' - > toSql() 'に置き換えて、この値をダンプし、あなたが期待したものと比較して、さらに必要な場合はこの質問に追加してください。 –

答えて

0

を使用しています。

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