我想在下面的sql查询中使用laravel 5.2
SELECT * FROM `products` WHERE soundex(`products`.`name`)=soundex('Neckholder Creme');
我在这里试过像
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);
但它会出现如下所示的错误并因为“列名
中的问题而出现问题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中使用?任何帮助将不胜感激。
由于
答案 0 :(得分:3)
如果您只需要基本查询,则可以使用DB::raw
(documentation)
select(DB::raw('SELECT * FROM products WHERE soundex(products.name)=soundex("Neckholder Creme")'));
或者您可以在eloquent中使用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);
希望有所帮助