这是我加入表的情况,但问题是其中某些列与其他表具有相同的名称。我想知道的是如何防止这种情况发生。具有相同名称的列是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
是一个对象数组,我将其用作子句的searchmap。但是我的问题就像我上面说的那样,表在某些列(例如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
,对此的任何帮助将不胜感激。编辑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']);
最佳答案
根据需要更改模型类,以指定要选择的列:
public function someModel() {
return $this->belongs_to('otherModel')->select(array('id', 'name'));
}
关于php - Laravel-仅选择联接表中的特定列,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43468427/