【发布时间】:2017-02-28 14:47:18
【问题描述】:
我正在向 Tickets 表添加外键。另一个表是 ticket_statuses。
在 artisan 中,我执行了这个命令:php artisan make:migration add_ticket_status_to_tickets_table
这是迁移文件中的代码:
class AddTicketStatusToTicketsTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::table('tickets', function ($table) {
$table->integer('ticket_status_id')->unsigned();
$table->foreign('ticket_status_id')->references('id')->on('ticket_statuses')->onDelete('cascade');
});
}
}
之后,我尝试建立关系。这是我在 Tickets Model 中的代码:
class Ticket extends Model
{
// Ticket __belongs_to__ Ticket Status
public function ticket_status()
{
return $this->belongsTo('App\TicketStatus');
}
}
在 artisan 中,我执行了 php artisan migrate 但我遇到错误
[Illuminate\Database\QueryException]
SQLSTATE[23000]: Integrity constraint violation: 1452 Cannot add or update a child row: a foreign key constraint fails (`idealcrmalphadb`.`#sql-4ea_1ce`, CONSTRAINT `tickets_ticket_status_id_foreign` FOREIGN KEY (`ticket_status_id`) REFERENCES `tickets` (`id`) ON DELETE CASCADE) (SQL: alter table `tickets` add constraint tickets_ticket_status_id_foreign foreignkey (`ticket_status_id`) references `tickets` (`id`) on delete cascade)
[PDOException]
SQLSTATE[23000]: Integrity constraint violation: 1452 Cannot add or update a child row: a foreign key constraint fails (`idealcrmalphadb`.`#sql-4ea_1ce`, CONSTRAINT `tickets_ticket_status_id_foreign` FOREIGN KEY (`ticket_status_id`) REFERENCES `tickets` (`id`) ON DELETE CASCADE)
我在模型部分犯了错误吗?请帮忙
【问题讨论】:
-
你确定是
on('tickets')?您可能有另一个用于工单状态的表。像ticket_statuses这样的东西。如果是这种情况,请将on('tickets')更改为on('ticket_statuses')或任何您的工单状态表的名称。 -
嗨@Doom5。我有一个 ticket_statuses 表。 $table->foreign('ticket_status_id')->references('id')->on('ticket_statuses')