У меня есть эти схемы:Laravel связь belongsTo идентификатор не распознается
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');
}
}
«разума» метод работает, но мне пришлось вручную добавить идентификатор. Почему я должен добавить идентификатор, если я следую конвенции? (или, по крайней мере, я так думаю). Он следует тому же соглашению, что и столбец user_id, и ему не нужен идентификатор.
Возможно, это связано с подчеркиванием в имени таблицы? – Sam
Это то, что я думал, но я ничего не мог найти в документации @Sam – Alan
Я просто быстро прочитал документацию ... вы можете попробовать переименовать свою функцию 'Ticket' в' ticket_reason() 'и посмотреть, не работает ли она без указания внешний ключ? Если это так, я могу добавить это как ответ и ссылку на документацию. – Sam