2017-02-10 10 views
2

私はこのmysqlクエリをlaravel 5.2に使用するにはどうすればよいですか?

return $query->select([ 'products.slug', 'products.id', 'sku', 'name', 'regular_price', 'sale_price', 'sale_from', 'sale_to', 'stock_status', 'product_type', 'featured_image_id' ]) 
      ->with('media_featured_image') 
      ->with('categories') 
      ->where('products.product_type', '<>', 'variation') 
      ->where('products.status', 'publish') 
      ->where(function($query) use ($keyword){ 
       foreach($keyword as $k){ 
        $query->where('soundex(products.name)',soundex($k)); 
       } 
      }) 
      ->paginate(120); 

のように、ここで試みたが、それは以下のようなエラーを与え、なぜなら ``列名に

の問題を抱えてlaravel 5.2

SELECT * FROM `products` WHERE soundex(`products`.`name`)=soundex('Neckholder Creme'); 

にSQLクエリの下に使用したいです

Column not found: 1054 Unknown column 'soundex(products.name)' in 'where clause' (SQL: select count(*) as aggregate from `products` where exists (select * from `categories` inner join `category_product` on `categories`.`id` = `category_product`.`category_id` where `category_product`.`product_id` = `products`.`id` and `categories`.`slug` <> shoparchiv) and `products`.`product_type` <> variation and `products`.`status` = publish and (`soundex(products`.`name)` = C352 and `soundex(products`.`name)` = J520)) 

Laravelではどのように使用できますか?どんな助けもありがとう。

おかげ

答えて

2

あなただけの基本的なクエリを必要とするなら、あなたは使用することができますDB::rawdocumentation

select(DB::raw('SELECT * FROM products WHERE soundex(products.name)=soundex("Neckholder Creme")')); 

それとも、雄弁でwhereRawを使用すると、既存のクエリでそれを使用することができます(documentaion

return $query->select([ 'products.slug', 'products.id', 'sku', 'name', 'regular_price', 'sale_price', 'sale_from', 'sale_to', 'stock_status', 'product_type', 'featured_image_id' ]) 
      ->with('media_featured_image') 
      ->with('categories') 
      ->where('products.product_type', '<>', 'variation') 
      ->where('products.status', 'publish') 
      ->where(function($query) use ($keyword){ 
       foreach($keyword as $k){ 
        $query->whereRaw("soundex(products.name) = '".soundex($k)."'"); 
       } 
      }) 
      ->paginate(120); 

希望すると助かります

関連する問題