我正试图将所有TicketMethod对象链接到所有Event对象:

foreach (Event::all() as $event) {
   $event->ticketMethods()->attach([1, 2]);
}

1和2是数据库中TicketMethod的唯一id。
在我的Event中,我有以下代码:
public function ticketMethods()
{
        return $this->belongsToMany('App\Models\TicketMethod', 'event_ticket_methods');
}

例外情况:
[Illuminate\Database\QueryException]
  SQLSTATE[23000]: Integrity constraint violation: 1452 Cannot add or update
  a child row: a foreign key constraint fails (`tickets`.`event_ticket_method
  s`, CONSTRAINT `event_ticket_methods_event_id_foreign` FOREIGN KEY (`event_
  id`) REFERENCES `events` (`id`) ON DELETE CASCADE) (SQL: insert into `event
  _ticket_methods` (`event_id`, `ticket_method_id`) values (@/Y�� ���ʫB{�1�,
   1), (@/Y�� ���ʫB{�1�, 2))

事件id字段采用二进制格式,这会导致问号。
我没有得到错误,因为事件存在,我刚刚检索它们…

最佳答案

最后检查了我所有的迁移。event_id列的长度与events表中的id字段的长度不同。

关于mysql - Laravel同步引发完整性异常(即使存在),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46490199/

10-13 04:26