मेरे पास यह 3 मॉडल है।

Author
|id|name|

Post
|id|author_id|

Likes
|id|post_id|

का रिश्ता।

लेखक

public function post()
{
    return $this->hasMany(Post::class, 'author_id', 'id');                                             
}

पद

public function author(){
    return $this->belongsTo(Author::class, 'id', 'author_id');
}

public function likes(){
    return $this->hasMany(Likes::class, 'post_id', 'id');
}

को यह पसंद है

public function post()
{
    return $this->belongsTo(Post::class, 'id', 'post_id');
}

मेरी समस्या यह है कि सभी लेखकों को उनकी सभी पोस्ट से कुल पसंद के साथ कैसे सूचीबद्ध किया जाए।

कॉल $authors->posts->पसंद का उपयोग करने से त्रुटि होती है क्योंकि पोस्ट एक संग्रह लौटाते हैं।

1
luca ditrimma 5 अक्टूबर 2020, 18:55

1 उत्तर

सबसे बढ़िया उत्तर

लेखक के पास कई पोस्ट हैं, और पोस्ट के पास कई पसंद हैं।
लेखक मॉडल से सभी पसंद प्राप्त करने के लिए, आप एक hasManyThrough() संबंध :

public function likes()
{
   return $this->hasManyThrough(
       'App\Likes', // Likes model
       'App\Post', // Post model
       'author_id', // Foreign key on posts table...
       'post_id', // Foreign key on likes table...
       'id', // Local key on authors table...
       'id' // Local key on posts table...
   );
}
1
sta 5 अक्टूबर 2020, 19:42