私は4列のテーブルを持っています。私は入力に基づいて行を表示すると、優先順位フィールドに従って優先順位を表示できる必要があります。結果に優先順位をつける方法
例:私のテーブルは次のようになります
私はそれがどのように動作するかを以下の私のテストケース持ってID title description tags
1 web developer designer front-end
2 designer front-end web developer
3 front-end web developer designer
:今
$input = 'web developer' // the sequence should be IDs : 1, 3, 2
$input = 'front-end' // output sequence result is : 3, 2, 1
$input = 'designer' // result sequence : 2, 1, 3
が、私はタイトルからダウンタグに結果を優先させたいです入力に基づいています。
$blog = DB::('blogs')
->where('title', 'LIKE', '%$title%')
->where('description', 'LIKE', '%$title%')
->where('tags', 'LIKE', '%$title%');
しかし、上記のコード、あなたがその列に基づいてIDを選択することができ
$input = 'web developer';
$byTitle = DB::('blogs')
->where('title', 'LIKE', '%$input%')
->select('id');
$byDescription = DB::('blogs')
->where('description', 'LIKE', '%$input%')
->select('id');
$byTag = DB::('blogs')
->where('tag', 'LIKE', '%$input%')
->select('id');
$ids = $byTitle->union($byDescription)->union($byTag)->get();
、それは
あなたがロジックの男を持っていますが、私はあなたが私はあなたにも 'ORDERが必要だと思う – smzapp
データの何百万を持っていますならば、これはあまりにも遅い動作すると思いますBY'これを行うにはここに句を入れてください。 'UNION'クエリに計算カラムを追加して、各サブクエリを追跡し、最後にそのカラム順に並べ替えることができます。 –
@サミュエルはい、絶対に言えば、私は "良い解決策ではない"と言いました。 –