В моем приложении Laravel, как я могу с помощью следующей настройки создать новых родителей и детей?Создание новых полиморфных отношений
class Parent extends Model
{
public function extended()
{
return $this->morphTo();
}
}
class Child extends Model
{
public function extendedFrom()
{
return $this->morphOne('App\Parent', 'extended');
}
}
class CreateParentsTable extends Migration
{
public function up()
{
Schema::create('parents', function (Blueprint $table) {
$table->increments('extended_id');
$table->string('extended_type');
});
}
}
class CreateChildrenTable extends Migration
{
public function up()
{
Schema::create('children', function (Blueprint $table) {
$table->unsignedInteger('id');
});
Schema::table('children', function (Blueprint $table) {
$table->foreign('id')
->references('extended_id')->on('parents')
->onDelete('cascade');
});
}
}
Я попытался
$parent = new Parent();
$parent->save();
$child = new Child();
$parent->extended()->save($child);
Но что дает следующую ошибку
BadMethodCallException в Builder.php линии 2161:
Вызов неопределенной метод Осветите \ Database \ Query \ Builder :: save()
Использование того, что я написал с помощью '$ parent-> extended() -> associate ($ child);' вместо '$ parent-> extended() -> save ($ child);' follow with $ $ parent- > save() 'приводит к созданию нового родителя с id 0 и не созданного дочернего элемента. –
Также добавление '$ child-> extendedFrom() -> save ($ parent)' и '$ child-> save()' добавляет дочерний элемент, но id всегда равен 0, хотя родительский столбец является столбцом автоматического увеличения. –
'associate' не должен сохранять' child'. После того, как вы свяжетесь, попробуйте '$ child-> save()' – user3158900