クエリのAS
を定義する方法は??
私は次を試しました:
_$data = News::order_by('news.id', 'desc')
->join('categories', 'news.category_id', '=', 'categories.id')
->left_join('users', 'news.user_id', '=', 'users.id') // ['created_by']
->left_join('users', 'news.modified_by', '=', 'users.id') // ['modified_by']
->paginate(30, array('news.title', 'categories.name as categories', 'users.name as username'));
_
問題は、カテゴリからの_['name']
_がusers
からのものに置き換えられることです。それらを異なる名前で持つ方法はありますか?
上記のエイリアスを持っている...両方の結合が_users.name
_を返すエイリアスを作成するにはどうすればよいですか?
paginate()
メソッドの2番目のパラメーターは、クエリで選択するテーブル列のarrayを受け入れます。だからこの部分:
paginate(30, array('news.title, category.name'));
次のようにする必要があります。
paginate(30, array('news.title', 'category.name'));
[〜#〜] update [〜#〜](質問を変更した後)
これを試して:
->paginate(30, array('news.title', 'categories.name as category_name', 'users.name as user_name'));
更新2(質問を変更した後、再度)
テーブルでもエイリアスを使用できます。
$data = News::order_by('news.id', 'desc')
->join('categories', 'news.category_id', '=', 'categories.id')
->join('users as u1', 'news.user_id', '=', 'u1.id') // ['created_by']
->join('users as u2', 'news.modified_by', '=', 'u2.id') // ['modified_by']
->paginate(30, array('news.title', 'categories.name as categories', 'u1.name as creater_username', 'u2.name as modifier_username'));
この質問に対するよりシンプルでわかりやすい答えは、Eloquentがテーブル名または列を持つエイリアスを直接サポートしていることを私が探していたものです、たとえば:
$users = DB::table('really_long_table_name AS t')
->select('t.id AS uid')
->get();