[英]Laravel - Select only specified columns in joined tables
這是我已加入表的情況,但問題是其中某些列與其他表具有相同的名稱。 我想知道的是如何防止這種情況發生。 具有相同名稱的列是created_at
但我只想使用方法的表created_at( methods.created_at
)。 這是我的代碼,以更好地說明我的情況
$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
對象數組->where
,我將其用作子句的搜索映射。 但是我的問題就像我上面說的那樣,表在某些列(例如created_at)上具有相同的名稱,其他列則沒有關系,因為我沒有使用它。
問題是,當我通過searchmap搜索時,如何明確告訴查詢我正在使用methods.created_at
(在本例中$request->filters['created_at']
。請告訴我是否需要任何更多細節。
編輯
if($("#date_select_off").val() == "daily") {
let day = $("#day_date").val();
filter_list.created_at = day;
}
在jquery的此代碼中,我將鍵命名為與列相同的鍵,以便可以將其用作php查詢中的參數。 但是,就像我最初filter_list.methods.created_at
問題一樣,我無法將其命名為filter_list.methods.created_at
,對此非常有幫助。
編輯2
我將如何對特定鍵值對使用“喜歡”查詢?
->where($request->filters)//will act as a searchmap
->orWhere('methods.created_at', 'LIKE', $request->filters['methods.created_at'])
我嘗試這樣做,但這是錯誤的,因為鍵值對已經在第一個where子句中出現了。
編輯3它可以使用一些改進,但是
$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']);
在這種情況下,請在where子句中傳遞完全限定的列名,例如:
->where('methods.created_at', '=', $request->filters)
或創建表別名並使用如下別名:
SELECT col from methods as t1,
...
WHERE t1.col = 'some value';
根據需要更改模型類,以指定要選擇的列:
public function someModel() {
return $this->belongs_to('otherModel')->select(array('id', 'name'));
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.