doujiang2812 2017-12-04 23:34 采纳率: 0%
浏览 45
已采纳

Yii:如何从两个不同的cdbcriteria中查找和删除重复的条目

I would like to find the users who liked my products and the users who are following me. However, there might be users that who liked my products and also followed me, which then I will retrieve the same user id for two times. is there anyway to only record the same user id once instead of two times?

Below are the codes that I used to identify the users who liked my products and the users who followed me.

$userid = $productModel->userId;
$followCriteria = new CDbCriteria;
$followCriteria->addCondition("follow_userId = $userid");
$followers = Followers::model()->findAll($followCriteria);
foreach ($followers as $follower) {
$followuserid = $follower->userId;

$productid = $productModel->productId;
$favoriteCriteria = new CDbCriteria;
$favoriteCriteria->addCondition("productId = $productid");
$favoritee = Favorites::model()->findAll($favoriteCriteria);
foreach ($favoritee as $favoriteer) {
$favoriteuserid = $favoriteer->userId;
  • 写回答

1条回答 默认 最新

  • duanchuang3182 2017-12-05 00:37
    关注

    You can put the ids from first query in an array like this:

    ...
    foreach ($followers as $follower) {
        $idsAlreadyDiscovered[] = $followuserid = $follower->userId;
    ...
    

    and after you can add a NOT IN condition in second criteria

    ...
    $productid = $productModel->productId;
    $favoriteCriteria = new CDbCriteria;
    $favoriteCriteria->addCondition("productId = $productid");
    
    // Remove user ids from first query
    $favoriteCriteria->addNotInCondition('userId', $idsAlreadyDiscovered);
    
    $favoritee = Favorites::model()->findAll($favoriteCriteria);
    foreach ($favoritee as $favoriteer) {
        $favoriteuserid = $favoriteer->userId;
    }
    

    [Edit]

    Or you can use your $favoriteuserid and $followuserid as arrays and after merge it in a unique.

    ...
    foreach ($followers as $follower) {
        $followuserid[] = $follower->userId;
    }
    ...
    foreach ($favoritee as $favoriteer) {
        $favoriteuserid[] = $favoriteer->userId;
    }
    ...
    $uniqueIds = array_unique(array_merge($followuserid, $favoriteuserid));
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
编辑
预览

报告相同问题?

手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部