Bonjour je suis nouveau ici et pas un locuteur natif anglais alors s'il vous plaît pardonnez-moi pour toute erreur sur ma grammaire et sur la mise en forme de ma question.Laravel union dans les fonctions du modèle
Je construis une application avec php en utilisant la version 5.4 de laravel framework. L'application web est très simple pour examiner les articles et les utilisateurs qui publient des articles.
Je voudrais apprendre comment je peux unir les résultats des fonctions dans mon modèle. Je souhaite que la fonction allReviews du modèle utilisateur renvoie les avis que l'utilisateur a mélangés avec les avis que ses articles ont été créés par orderby.
laissez-moi vous expliquer mieux.
voici mes 3 tables principales:
Users | Articles | Reviews
--------- | --------- | ---------
id | id | id
name | user_id | reviewable_id
email | title | reviewable_type
password | body | reviewtext
etc.. | etc.. | created_time
et voici mon code modèles:
class User extends Model{
protected $table = 'users';
public function articles()
{
return $this->hasMany(Article::class,'user_id');
}
public function reviews(){
return $this->morphMany(Review::class,'reviewable');
}
public function allReviews(){
/*
i want union something like this:
$result = $this->reviews() union
foreach ($this->Articles() as $Article) {
union $Article->reviews();
}
orderby created_time ASC or DESC doesn't matter
return $result
*/
}
}
class Article extends Model{
protected $table = 'articles';
public function user()
{
return $this->belongsTo(User::class,'user_id');
}
public function reviews(){
return $this->morphMany(Review::class,'reviewable');
}
}
class Review extends Model{
protected $table = 'reviews';
public function reviewable(){
return $this->morphTo('reviewable');
}
}
Alors ma question est de savoir comment je peux faire la fonction allReviews d'un utilisateur à travailler?
Toute aide est appréciée :) Merci
je vous remercie pour votre réponse rapide, mais cela ne renvoie que les commentaires l'utilisateur a obtenu je veux retourner les commentaires l'utilisateur a + les commentaires les articles qu'il a écrit et de les mélanger les résultats et les faire par ordre chronologique. merci – NesJohnL
Vous semblez avoir un nom de table en double, vous utilisez 'articles' à la fois pour le modèle Articles et le modèle Reviews. En outre, votre classe de modèle ne doit pas être au pluriel. Renommer les avis à revoir. Changez la propriété Review-> table en 'reviews' et créez une migration correcte. – user3010273
ahhh je suis vraiment désolé juste remarqué et changé mais je ne sais pas comment faire la fonction allReviews travail :( – NesJohnL