La création de gauche rejoint dans cakephp
Je suis en train de sélectionner les données à l'aide d'une jointure GAUCHE dans cakephp, voici comment puis-je utiliser plus de deux tables de jointure GAUCHE.Ici iam création de GAUCHE jointure entre deux tables news_feeds et news_feed_likes.je veux vous présenter deux autres tables, NewsFeedComments et newsfeed_likes_comments.Comment puis-je faire cela?
Merci pour votre aide
$this->paginate = array(
'conditions' => array('NewsFeed.group_id'=>$groupdata['Group']['id'],'NewsFeed.status'=>'A'),
'joins' => array(
array(
'alias' => 'newslikes',
'table' => 'news_feed_likes',
'type' => 'LEFT',
'conditions' => array(
'newslikes.news_feed_id = NewsFeed.id',
'newslikes.user_id'=>$this->Auth->user('id'),
'newslikes.status'=>'1',
),
),
array(
'alias' => 'newscommentslikes',
'table' => 'news_feed_comments_likes',
'type' => 'LEFT',
'conditions' => array(
'newscommentslikes.news_feed_comment_id = NewsFeedComment.id',
'newscommentslikes.user_id'=>$this->Auth->user('id'),
'newscommentslikes.status'=>'1',
),
),
),
'fields' => array(
'IFNULL(newslikes.user_id,0) AS likestatus',
'NewsFeed.id',
'NewsFeed.posted_message',
'NewsFeed.created',
'NewsFeed.user_id',
'NewsFeed.status',
'NewsFeed.newslike',
'IFNULL(newslikes.status,0) AS status',
),
'order' => array('NewsFeed.created' => 'desc'),
);
$this->set('newsfeed', $this->paginate( $this->NewsFeed ) );
'joins' => array(array(..first join..), array(..second join..), ..., array(.. nth join..));
Avez-vous essayé de simplement ajouter plus de tableaux pour les jointures tableau?- vais essayer cela et de revenir à vous
- j'ai vérifié cette s'il vous plaît vérifier mon code ci-dessus, il me fait erreur Unknown column 'NewsFeedComment.id' dans 'clause', voici comment puis-je utiliser un autre modèle NewsFeedComment.
- Fondamentalement, il doit retourner 0 si il n'y a pas de newscommentslikes pour news_feed_comments
Vous devez vous connecter pour publier un commentaire.
Mon premier conseil serait de considérer le déplacement de ce de la le modèle. Cependant, pour répondre à la question spécifique, il suffit d'ajouter plus de jointures en fonction de la clé étrangère. Ainsi, par exemple, si vous avez une clé étrangère entre NewsFeedLike et NewsFeedLikeComments, vous pouvez simplement ajouter une autre jointure comme suit:
Parce que vous êtes déjà rejoindre NewsFeedLike, il utilisera ces conditions à la limite de la NewsFeedLikeComment.
Une autre astuce: suivez Toujours les CakePHP normes de codage lors de l'écriture de votre code. Il fera de votre vie beaucoup moins douloureux. Évitez d'utiliser des minuscules souligné alias pour vos modèles. Toujours écrire CamelCase avec une majuscule de la première lettre et singulier. Donc, dans votre jointures, au lieu de
newslikes
etnewscommentslikes
que des alias, vous devez utiliserNewsLike
etNewsCommentLike
.Vous pouvez joindre plusieurs tables à l'aide de la syntaxe suivante:
'TableName.id = table_name_1.id'
. Toutefois, votre alias estTableAlias1
. Votre état de santé devrait correspondre à l'alias comme ceci:'TableName.id = TableAlias1.id'
.