【问题标题】:how to pass array of joins to select query in laravel 5.2如何在 laravel 5.2 中传递连接数组以选择查询
【发布时间】:2017-06-17 11:21:25
【问题描述】:

我正在尝试从多个表中获取数据。我已将连接语句存储在 $Joins 数组中,并将该数组传递给模型
这是我迄今为止尝试过的 -

$tbl_name="user_master";
$select= ['user_master.*', 'country.country_name', 'city.city_name', 'login_master.email_id', 'login_master.password'];
$joins=[
         "'country', 'user_master.country_id', '=', 'country.country_id'",
         "'city', 'user_master.city_id', '=', 'city.city_id'",
         "'login_master', 'user_master.user_id', '=', 'login_master.user_id'"
       ]; 
$users=$obj->getdata($tbl_name,$select,$joins);  

型号 -

public function getdata($tbl_name,$select,$joins)
    {
        $users = DB::table($tbl_name)
                ->join($joins)
                ->select($select)
                ->paginate(5);

                return $users;
    }  

我正在尝试将 $joins 数组传递给查询,但它显示错误 -
Illuminate\Database\Query\Builder::join() 缺少参数 2,在第 61 行的 /opt/lampp/htdocs/demo_laravel/app/Models/Userdata.php 中调用并定义

如果我尝试 -

$users = DB::table($tbl_name)
                ->join('country', 'user_master.country_id', '=', 'country.country_id')
                ->join('city', 'user_master.city_id', '=', 'city.city_id')
                ->join('login_master', 'user_master.user_id', '=', 'login_master.user_id')
                ->select($select)
                ->paginate(5);

                return $users;  

它工作正常,但是当我将数组传递给连接时,它显示错误。
如何解决?
请帮帮我。

【问题讨论】:

  • 我认为 join 不会接受数组参数。使用你的第二个例子。很清楚。
  • join 可以接受数组但不知道如何

标签: php laravel


【解决方案1】:

试试这个:

$joins 格式如下:

$joins = [
    ['country', 'user_master.country_id', '=', 'country.country_id'],
    ['city', 'user_master.city_id', '=', 'city.city_id'],
    ['login_master', 'user_master.user_id', '=', 'login_master.user_id'],
];

和型号:

public function getdata($tbl_name, $select, $joins)
{
    $users = DB::table($tbl_name);

    foreach ($joins as $join) {
        $users = $users->join(...$join);
    }

    $users = $users
        ->select($select)
        ->paginate(5);

    return $users;
}

【讨论】:

  • 感谢您的回答,但它不起作用。得到同样的错误。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-18
  • 2014-04-18
  • 1970-01-01
  • 2019-07-11
  • 2014-03-09
  • 2016-03-29
相关资源
最近更新 更多