我尝试了很多方法,但没有修复这个错误我能做什么?
有代码
控制器
$ticketId = Tickets::get('id');
$assig_user_name = DB::table('tickets')
->join('users', 'tickets.assigned_id', '=', 'users.id')
->select('users.id','users.name')
->where('tickets.id', '=', $ticketId)
->get();
当我添加$ticketId,它的工作和显示id是我想要的,但在加入它不工作。
SQLSTATE[HY093]: Invalid parameter number通常表示您在查询中提供了不正确的占位符数量,并且占位符的数量与您试图绑定到这些占位符的值的数量不匹配。
你可以试试:
$assig_user_name = DB::table('tickets')
->join('users', 'tickets.assigned_id', '=', 'users.id')
->select('users.id','users.name')
->where('tickets.id', '=', ':ticketId')
->setBindings([':ticketId' => $ticketId])
->get();
另一个问题可能是$ticketId是一个数组,所以您需要:
$assig_user_name = DB::table('tickets')
->join('users', 'tickets.assigned_id', '=', 'users.id')
->select('users.id','users.name', 'tickets.*')
->whereIn('tickets.id', $ticketId->pluck('id')->toArray())
->get();
$ticketId return collection如果你想获取所有拥有ticket的用户那么你可以这样做
$ticketId = Tickets::select('id')->get();
$assig_user_name = DB::table('tickets')
->join('users', 'tickets.assigned_id', '=', 'users.id')
->select('users.id','users.name')
->wherein('tickets.id',[$ticketId])
->get();
试试这个…
$ticketsId = Tickets::select('id')->get()->toArray();
$assig_user_name = DB::table('tickets')
->join('users', 'tickets.assigned_id', '=', 'users.id')
->select('users.id','users.name')
->whereIn('tickets.id', $ticketsId)
->get();