如何修复此错误:"SQLSTATE[HY093]: Invalid parameter number"



我尝试了很多方法,但没有修复这个错误我能做什么?

有代码

控制器

$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();

相关内容

最新更新