我有那些模式:Laravel關係屬於關聯ID無法識別
Schema::create('tickets', function (Blueprint $table) {
$table->increments('id');
$table->integer('ticket_reason_id')->unsigned();
$table->integer('user_id')->unsigned();
$table->timestamps();
$table->foreign('ticket_reason_id')->references('id')->on('ticket_reasons')->onDelete('cascade');
$table->foreign('user_id')->references('id')->on('users')->onDelete('cascade');
});
Schema::create('ticket_reasons', function (Blueprint $table) {
$table->increments('id');
$table->string('name');
$table->timestamps();
});
而這些定義的關係
class Ticket extends Model
{
public function user()
{
return $this->belongsTo(User::class);
}
public function reason()
{
return $this->belongsTo(TicketReason::class, 'ticket_reason_id');
}
}
「理性」的方法的作品,但我不得不手動添加ID。爲什麼我要按照慣例添加ID? (或者至少我是這麼認爲的)。它遵循與user_id列相同的約定,它不需要id設置器。
它可能與表名中的下劃線有關? – Sam
這是我的想法,但我無法在文檔中找到任何內容@Sam – Alan
我剛剛通過文檔快速閱讀......你可以嘗試將'Ticket'函數重命名爲'ticket_reason()'並查看它是否可以正常工作,而無需指定外鍵?如果是這樣,我可以添加這個作爲答案和鏈接到文檔。 – Sam