这是我加入表的情况,但问题是其中某些列与其他表具有相同的名称。我想知道的是如何防止这种情况发生。具有相同名称的列是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

php - Laravel-仅选择联接表中的特定列-LMLPHP

如何对特定的键值对使用“喜欢”查询?

->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/

10-11 03:21