私の状況は私がテーブルを結合しましたが、それらの列のいくつかは他のテーブルの名前と同じです。私が知りたいことは、これをどうやって防ぐかです。同じ名前の列はcreated_at
ですが、メソッドのテーブルcreated_at(methods.created_at
)のみを使用します。ここに私の状況は良くLaravel - 結合されたテーブルの指定された列のみを選択します。
$filtered_table = Method::leftJoin('users', 'users.id', '=', 'methods.created_by')
->leftJoin('roles', 'roles.id', '=', 'users.role_id')
->leftJoin('types', 'types.id', '=', 'methods.type_id')
->where($request->filters)//will act as a searchmap
->get([ 'users.username', 'users.id AS users_id', 'methods.*', 'methods.id AS method_id', 'methods.name AS method_name', 'roles.id AS role_id', 'roles.name AS role_name',
'types.id AS type_id_typetable', 'types.name AS type_name']);
->where
は、オブジェクトの配列されている様子がわかり、私は句のためのsearchmapとしてそれを使用しています説明するために私のコードです。しかし、私の問題は、上記のテーブルの名前は、例えばcreated_atのようにいくつかのカラムに同じ名前が付けられているようなものです。他のカラムは使用しないので問題ありません。
質問は、私は明示的に私は、この場合、(searchmapを通じて$request->filters['created_at']
それを探していたとき、私はmethods.created_at
を使用していたクエリを教えてください方法です。は、あなたが任意の詳細が必要な場合は私に知らせてください。
EDIT
if($("#date_select_off").val() == "daily") {
let day = $("#day_date").val();
filter_list.created_at = day;
}
jqueryの中で私はPHPのクエリにパラメータとして使用できるように列と同じキーに名前を付ける。しかし、私の、私は単純にすることができます私の最初の問題のようにしています名前はですこれに関する助けがあれば大歓迎です。
EDIT 2
どのように私は、その特定のキーと値のペアに 'LIKE' クエリを使用しますか?
->where($request->filters)//will act as a searchmap
->orWhere('methods.created_at', 'LIKE', $request->filters['methods.created_at'])
私はこれをやってみましたが、最初のwhere句にキー値のペアが既に当てられているので間違っています。これは、いくつかの改善を使用することができますが、ええ、この場合
$filtered_table = Method::leftJoin('users', 'users.id', '=', 'methods.created_by')
->leftJoin('roles', 'roles.id', '=', 'users.role_id')
->leftJoin('types', 'types.id', '=', 'methods.type_id')
->where($request->filters)//will act as a searchmap
->orWhere('methods.created_at', 'LIKE', '%' . $request->filters['methods.created_at'] . '%')
->get([ 'users.username', 'users.id AS users_id', 'methods.id AS method_id', 'methods.name AS method_name', 'methods.created_at AS method_created_at', 'roles.id AS role_id', 'roles.name AS role_name',
'types.id AS type_id_typetable', 'types.name AS type_name']);
どのようにフィルタをクエリに渡しますか?検索フォーム?もしそうなら、それはどのように見えるのですか? – apokryfos
私はこのリンクで受け入れられた答えを使用しましたが、それは可能だとは思いませんでしたが、ええ。 http://stackoverflow.com/questions/26682817/laravel-extending-eloquent-where-clauses-depending-on-dynamic-parametersフィルタは、キー値のペアを持つオブジェクトの配列です。 – user827391012
'$ filters = [" methods.created_at "=>" somedate "];'のようなものが動作します。しかし、配列内のlaravelのドット表記法はサブ配列を意味するので、このようなことを受け入れるよう要求するのは難しいかもしれません。おそらく最初に['array_dot($ request-> all())'](https:// laravel.com/docs/5.4/helpers#method-array-dot)。 – apokryfos