雄辩等于跟随的雄辩

时间:2013-11-02 13:52:41

标签: php laravel

我正在尝试在应用程序中创建类似于twitter的源代码,我有一个名为connections的数据库,其中包含userfollow以及另一个名为feed的数据库owner等于follow中的connections列。

如果静态地跟踪者的每个ID都可以在每个关注者身上使用where('owner', '=' $follow)并返回它,我该怎么办。

我试过这种方法,但这并不理想:

Get each follower inside connections;

foreach(follower) {

Get 10 of the latest posts orderBy "created_at";

Push into array;

}

shuffle array;

limit array to 15;

return array;

这也是因为返回的数组没有按创建日期排序。

如果用户以最佳/最简单的方式关注所有者,我将如何使用eloquent获取Feed项目?

是否有可以使用的特定Laravel工具?

此外,数据库布局不是固定的,如果需要可以更改,以便更好地解决这个问题。

1 个答案:

答案 0 :(得分:0)

您需要在用户与自身之间创建多对多关系。请参阅laravel eloquent documentation http://laravel.com/docs/eloquent#relationships。我没有测试这段代码,但它应该足以让你开始走上正确的轨道。

创建一个名为“user_following”的数据透视表,其中包含:

(int)id,(int)user_id,(int)following_id

然后做这样的事情:

<?php

// Model 

class User extends Eloquent {

    public function following()
    {
        return $this->belongsToMany('User', 'user_following', 'user_id', 'following_id');
    }

    public function tweets()
    {
        return $this->hasMany('Tweet')->orderBy('created_at', 'desc');
    }

}



// controller

$tweetsOfWhoImFollowing = User::find($id)->following->tweets;