Согласно Dayle Reesвнешний ключ не признается в Laravel 4,2
All foreign key columns follow a similar naming convention. The singular form of the related model appended with _id.
Рассмотрим эту миграцию:
class CreateTables extends Migration {
// ...
public function up()
{
Schema::create('artists', function($table) {
$table->increments('id');
$table->string('name',64);
$table->timestamps();
});
Schema::create('albums', function($table) {
$table->increments('id');
$table->string('name',64);
$table->integer('artist_id')->unsigned();
$table->foreign('artist_id')->references('id')->on('artists');
$table->timestamps();
});
}
Вот мои красноречивые модели:
<?php
// Artist model
class Artist extends Eloquent {
public function albums() {
return $this->hasMany('Album');
}
}
<?php
// Album model
class Album extends Eloquent {
public function artists() {
return $this->belongsTo('Artist');
}
}
Я использовал их, как это:
Route::get('/', function() {
$artist = new Artist;
$artist->name = "Morbid Angel";
$artist->save();
$album = new Album;
$album->name = "Altars of Madness";
$album->artists()->associate($artist);
$album->save();
return View::make('hello');
});
Это не похоже на работу, согласно журналам:
[2015-06-09 06:01:12] production.ERROR: exception 'PDOException' with message 'SQLSTATE[42S22]: Column not found: 1054 Unknown column 'artists_id' in 'field list''
Но я не создавал artists_id
. Что это значит? Не должен ли laravel найти artist_id
, потому что он должен быть сингулярным следующим by _id
?
Как вы определяете свои отношения. Я думаю, это один для многих – chanafdo