Codeigniter:想通过使用条令2库实现左连接吗
请帮助我将Codeigniter中的两个表与Orm docrtrine 2库左连接。首先,您需要将条令集成到CodeIgnitor中 这就是如何使用自定义查询将Doctrine中的两个表左键联接Codeigniter:想通过使用条令2库实现左连接吗,codeigniter,doctrine-orm,left-join,Codeigniter,Doctrine Orm,Left Join,请帮助我将Codeigniter中的两个表与Orm docrtrine 2库左连接。首先,您需要将条令集成到CodeIgnitor中 这就是如何使用自定义查询将Doctrine中的两个表左键联接 <?php $query = $em->createQuery('SELECT u.id, a.id as article_id FROM CmsUser u LEFT JOIN u.articles a'); $results = $query->getResult(); // a
<?php
$query = $em->createQuery('SELECT u.id, a.id as article_id FROM CmsUser u LEFT JOIN u.articles a');
$results = $query->getResult(); // array of user ids and every article_id for each user
有关DQL的更多信息:-
我希望这有帮助,
干杯 条令实体模型不提供一对多的关联,反之亦然。要允许这些功能,您必须使用有效关联更新实体。下面是这两个表的示例,其中在users表中包含用户信息,在UserFavoriteMeals中包含最喜欢的饭菜 对于左连接,需要在两个实体中更新关联,如下所述: 在用户实体中,添加UserFavoriteMeals的onetomany关联,其中mappedby是数据库中发生关联的关键
/**
* @var \Entity\UserFavoriteMeals
*
* @OneToMany(targetEntity="Entity\UserFavoriteMeals", mappedBy="userid" )
* @JoinColumns({
* @JoinColumn(name="id", referencedColumnName="userId", nullable=true)
* })
*/
private $UserFavoriteMeals;
同样,在UserFavoriteMeals实体中放置多个同一关联
/**
* @var \Entity\Users
*
* @ManyToOne(targetEntity="Entity\Users")
* @JoinColumns({
* @JoinColumn(name="userId", referencedColumnName="id", nullable=true)
* })
*/
private $userid;
通过这种方式,我们必须管理左连接的关联,现在只需以以下格式编写左连接查询:
$left_query = $this->em->createQuery("SELECT fm,u FROM Entity\userFavoriteMeals fm LEFT JOIN fm.userid u WHERE fm.userId = 231 ")->getArrayResult();
print_r($left_query);
$left_query_inverse = $this->em->createQuery("SELECT u,fm FROM Entity\Users u LEFT JOIN u.UserFavoriteMeals fm WHERE u.id = 4")->getArrayResult();
print_r($left_query_inverse);
$left_query = $this->em->createQuery("SELECT fm,u FROM Entity\userFavoriteMeals fm LEFT JOIN fm.userid u WHERE fm.userId = 231 ")->getArrayResult();
print_r($left_query);
$left_query_inverse = $this->em->createQuery("SELECT u,fm FROM Entity\Users u LEFT JOIN u.UserFavoriteMeals fm WHERE u.id = 4")->getArrayResult();
print_r($left_query_inverse);