In meiner Laravel-Anwendung kann ich mit dem folgenden Setup neue Eltern und Kinder erstellen?Erstellen neuer polymorpher Beziehungen
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');
});
}
}
ich versucht habe
$parent = new Parent();
$parent->save();
$child = new Child();
$parent->extended()->save($child);
Aber das gibt dem folgenden Fehler
BadMethodCallException in Builder.php Linie 2161:
Call to undefined Methode Illuminate \ Database \ Abfrage \ Builder :: save()
Verwenden, was ich schrieb mit $ $ parent-> extended() -> associate ($ Kind); 'anstelle von $ parent-> extended() -> speichern ($ Kind);' gefolgt von '$ Eltern- > save() 'führt zu einem neuen Elternteil mit der ID 0 und keinem untergeordneten Objekt. –
Außerdem fügt '$ child-> extendedFrom() -> save ($ parent)' und '$ child-> save()' das untergeordnete Element hinzu, aber die ID ist immer 0, obwohl die übergeordnete Spalte eine Spalte für automatisches Inkrement ist. –
'associate' darf das' child' nicht speichern. Versuchen Sie '$ Kind-> save()' – user3158900