这是我的情况我加入了表,但问题是其中一些列与其他表的名称相同。我想知道的是我如何防止这种情况发生。具有相同名称的列是created_at
但我只想使用方法' table 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
是一个对象数组,我将它用作该子句的搜索映射。但我的问题就像我上面所说的那样,表格在某些列上具有相同的名称,例如created_at,其他列并不重要,因为我没有使用它。
问题是,当我通过搜索地图搜索时,如何明确告诉查询我正在使用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
我如何使用' LIKE'查询该特定键值对?
->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']);
答案 0 :(得分:0)
在这种情况下,在where子句中传递完全限定的列名,如:
->where('methods.created_at', '=', $request->filters)
或创建表别名并使用别名,如:
SELECT col from methods as t1,
...
WHERE t1.col = 'some value';
答案 1 :(得分:0)
根据您的要求更改模型类,以指定要选择的列:
public function someModel() {
return $this->belongs_to('otherModel')->select(array('id', 'name'));
}