有没有办法使用Eloquent发表这个声明?

时间:2014-05-04 18:06:31

标签: php mysql laravel-4 eloquent

我一直在尝试很多方面,但我的知识不够好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));

1 个答案:

答案 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")')

只需将您想要匹配的内容替换为该栏。希望有所帮助。