Ich habe diese Tabellen:Beziehung zwischen zwei Tabellen mit einer Verknüpfungstabelle
topics
-------
id | title
------+----------
1 | Sport
2 | Social
posts_topics
------------
id | post_id | topic_id
------+--------------+------------
1 | 1 | 1
2 | 1 | 2
posts
------
id | title
-----+----------
1 | A Test Post
Ich speichere Themen in topics
Tabelle und verwenden posts_topics
zwischen meinem posts
Tabelle zu verknüpfen und topics
jetzt will ich wählen title
von Themen bei der Auswahl von Beiträgen,
Nach einigem Suchen in StackOverflow und Google habe ich diese Modelle geschrieben:
Posts.php
public function post_topics()
{
return $this->hasMany('App\PostTopics');
}
PostTopics.php
public function topics()
{
return $this->hasManyThrough('App\Posts', 'App\Topics', 'id', 'topic_id');
}
Topics.php
protected $table = 'topics';
und in meinem Controller ich versucht zu holen:
$post = Posts::with('post_topics')->find($post_id);
dd($post);
Jetzt funktioniert dieser Code, aber Titel der Themen können nicht zurückgegeben werden.
Sie haben eine Viele-zu-Viele-Beziehung mit 'posts_topics' als Pivot-Tabelle. Sie können dies hier nachlesen: https://laravel.com/docs/5.4/eloquent-relationships#many-to-many – patricus