Laravel-datatables: Laravel5.3のマルチフィールドで連結された結果値をフィルタリングする方法

作成日 2017年02月03日  ·  3コメント  ·  ソース: yajra/laravel-datatables

こんにちは、

私のデータテーブルでは、名前フィールドをCONCAT(fname、 ""、 "lname")として取得しています。 データテーブルの名前フィールドを検索する必要があり、fnameまたはlnameのいずれかと一致するものが返されるはずです。 これを行う方法を教えてください:

jsコード:

columns  : [
             { data: 'name', name: 'fname' }, //I have tried this also : ['fname','lname' ]
                --------------------

PHPコード:

$users = User::leftJoin('address', 'address.user_id', '=', 'users.user_id') 
                    ->select([\DB::Raw(
                        'CONCAT(fname," ",lname) as name, CONCAT(country_code, "", mobile_number) as mobile_num, IF(status = 1, "Active", "Inactive") as status,
                        (SELECT count(subscription_id) FROM subscription WHERE subscription.user_id = users.user_id AND subscription.status IN (2,4)) as totalActivesubscription'

                        ), 'gender', 'city as address', 'city','users.user_id', 'email_id'])

                    ->where('users.role_id', '=', $aParam['role_id']);

            return Datatables::of($users)
                ->addColumn('actions', function ($users) {
                    return view('users.templates.user_action', [
                        'user' => $users
                        ])->render();
                })


            ->make(true);

システムの詳細:」

  • オペレーティングシステム:Windows8、Linux
  • PHPバージョン:5.6
  • Laravelバージョン:5.3
  • Laravel-Datatablesバージョン:最新
question

最も参考になるコメント

たぶんあなたのjsでこのトリックを使ってみてください:

columns  : [
   { data: 'name', name: 'fname' },
   { data: 'name', name: 'lname', visible: false },
...

または、 filterColumnapiを使用します。

全てのコメント3件

たぶんあなたのjsでこのトリックを使ってみてください:

columns  : [
   { data: 'name', name: 'fname' },
   { data: 'name', name: 'lname', visible: false },
...

または、 filterColumnapiを使用します。

filterColumn apiを使用することで、機能しました。 ありがとうございました。
しかし、別のテーブル(メインクエリに参加している)のフィールドを検索する必要がある場合はどうでしょうか。

https://datatables.yajrabox.com/fluent/joinsを使用して解決しました

このページは役に立ちましたか?
0 / 5 - 0 評価