我一直在尝试很多方面,但我的知识不够好XD
DB::select ('SELECT c.`id_client`, UPPER (c.`name`) AS `name`, '
. 'c.`telephone`, MATCH (c.`name`) AGAINST ( ? ) AS `match` '
. 'FROM client c '
. 'WHERE MATCH (c.`name`) AGAINST ( ? ) '
. 'HAVING `match` > 5.2 ORDER BY `match` DESC LIMIT 10', array ($name, $name));
答案 0 :(得分:0)
不确定是否可以使用Eloquent完成,可能是Fluent而已?
$results = DB::table('client')
->select(array(
'id_client', 'name', 'telephone',
DB::raw("MATCH(name) AGAINST (?) AS match")
))
->whereRaw("MATCH (name) AGAINST(?)")
->having('match', '>', 5.2)
->orderBy('match','desc')
->limit(10);
可能会有一些拼写错误,但应该指向正确的方向。
修正了一些错别字。
<强>更新强>: 您可以尝试使用“匹配”,如下面的2个示例所示。不确定是否有效,因为我没有测试,但试一试 - 第二个看起来更干净:
->where(DB::raw('MATCH(`some_field`)'),'AGAINST',DB::raw('("bar")'))
OR
->whereRaw('MATCH (some_field) AGAINST("bar")')
只需将您想要匹配的内容替换为该栏。希望有所帮助。