Grundsätzlich haben Sie zwei verschiedene Arten von Beziehungen für dieselben zwei Tabellen eingerichtet – Sie haben eine Viele-zu-Viele- und eine Eins-zu-Viele-Beziehung eingerichtet. Es sieht so aus, als ob Sie wahrscheinlich viele zu vielen wollten, also müssen Sie diese Zeile ändern:
return $this->hasMany('Atividade');
Dazu:
return $this->belongsToMany('Atividade');
Dadurch wird die Beziehung als Viele-zu-Viele-Beziehung eingerichtet, die dann die unterstützt attach() Methode.
Der attach() Methode ist nur für Many-to-Many, für andere Beziehungen gibt’s save() oder saveMany() Und associate() (siehe die oben verlinkten Dokumente).
Ja, ich komme durcheinander. Danke!
– Bledson
5. Februar 2014 um 2:26 Uhr
BenutzerhilfeNeeding02356
Siehe die Dokumentation Laravel 5.7
Ein Kommentar gehört zu einem eindeutigen Beitrag
class Comment extends Model
{
/**
* Get the post that owns the comment.
*/
public function post()
{
return $this->belongsTo('App\Post');
}
}
Ein Beitrag kann mehrere Kommentare haben
class Post extends Model
{
/**
* Get the comments for the blog post.
*/
public function comments()
{
return $this->hasMany('App\Comment');
}
Wenn Sie eine Zugehörig-Beziehung aktualisieren/löschen möchten, können Sie die Associate/Dissoziate-Methode verwenden.
$post= App\Post::find(10);
$comment= App\Comment::find(3);
$comment->post()->associate($post); //update the model
$comment->save(); //you have to call save() method
//delete operation
$comment->post()->dissociate();
$comment->save(); //save() method
attach() ist für Viele-zu-Viele-Beziehungen. Es scheint, dass Ihre Beziehung eine Viele-zu-Viele-Beziehung sein soll, aber Sie haben sie dafür nicht richtig eingerichtet.
class Intervencao extends Eloquent {
public function atividades() {
return $this->belongsToMany('Atividade');
}
}
Dann ist die attach() sollte arbeiten
In meinem Fall habe ich zwei roles () -Methoden, weshalb dieser Fehler ausgelöst wird.
14446500cookie-checkDie Laravel-Attach()-Methode funktioniert nicht auf der HasMany-Seiteyes