我正在尝试在应用程序中创建类似于twitter的源代码,我有一个名为connections
的数据库,其中包含user
和follow
以及另一个名为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工具?
此外,数据库布局不是固定的,如果需要可以更改,以便更好地解决这个问题。
答案 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;