我正在构建类似Twitter的应用程序。有一个供稿,我只想在其中显示我关注的用户的帖子。
我尝试了所有使用join的操作,但是似乎没有任何效果。
我有3个表:Users
,Followers
,Shares
表格如下所示:
用户数 :id
关注 :user_id
,follower_id
股份 :user_id
我需要得到的是“所有共享,其中share.user_id = followers.follower_id”“ ANDWHERE
followers.user_id = users.id”
假设users.id为3,我尝试了以下操作:
$shares = DB::table('shares')
->leftjoin('followers', 'shares.user_id', '=', 'followers.follower_id')
->leftjoin('users', 'followers.user_id', '=', 'users.id')
->where('users.id', 3)
->where('shares.user_id', 'followers.follower_id')
->get();
但它不起作用。
任何帮助表示赞赏:)
我相信您的加入是错误的:
$shares = DB::table('shares')
->join('users', 'users.id', '=', 'shares.user_id')
->join('followers', 'followers.user_id', '=', 'users.id')
->where('followers.follower_id', '=', 3)
->get();
我也建议你为命名表follows
代替,感觉比较自然一点说user has many followers through follows
和user has many followees through follows
。
例
$shares = DB::table('shares')
->join('users', 'users.id', '=', 'shares.user_id')
->join('follows', 'follows.user_id', '=', 'users.id')
->where('follows.follower_id', '=', 3)
->get();
我没有意识到您正在使用DB::
查询而不是模型。因此,我正在解决问题并提供更多的清晰度。我建议您使用模型,对于那些从框架(尤其是SQL)开始的人来说,它要容易得多。
型号示例:
class User extends Model {
public function shares() {
return $this->hasMany('Share');
}
public function followers() {
return $this->belongsToMany('User', 'follows', 'user_id', 'follower_id');
}
public function followees() {
return $this->belongsToMany('User', 'follows', 'follower_id', 'user_id');
}
}
class Share extends Model {
public function user() {
return $this->belongsTo('User');
}
}
模型用法示例:
$my = User::find('my_id');
// Retrieves all shares by users that I follow
// eager loading the "owner" of the share
$shares = Share::with('user')
->join('follows', 'follows.user_id', '=', 'shares.user_id')
->where('follows.follower_id', '=', $my->id)
->get('shares.*'); // Notice the shares.* here
// prints the username of the person who shared something
foreach ($shares as $share) {
echo $share->user->username;
}
// Retrieves all users I'm following
$my->followees;
// Retrieves all users that follows me
$my->followers;
请帮帮我,对于连接,学习SQL和连接是痛苦的:( 我有表:类别,列名称:name,ID 我有列名称为ID的table:sub_类别 我有列名称为category\u id的表:provider\u services 当我在laravel视图中执行此操作时,刀片
我有3个表格:我的Laravel 5项目的产出、产品和服务。 我想基于此条件在一个查询中连接这3个表: 如果(p=产品)获取products.name 如果(s=服务)获取服务。名称
我有以下三种型号: 类别字段: 分类选项: 当我运行这个查询时,我得到了这个错误: SQLSTATE[42S22]:列未找到: 1054未知列'field ID'在'where子句'(SQL:选择*从其中=3)任何帮助请知道是什么问题!!?
因此,我计划使用Jupyter笔记本(Python 3)进行一些数据分析,出于协作的原因,我想将数据存储在github存储库中,但是数据集是敏感的。 因此,我希望将数据(当前为.csv)作为加密文件存储在repo上,然后在运行时对其进行解密(我猜是使用密码提示)。 最好的方法是什么?
问题内容: 我已经能够使用以下原始sql获取查询结果: 但是我还不能使它雄辩地工作。 根据一些类似的答案,我曾尝试在或中执行功能,但尚未过滤每个人的操作。就目前而言: 我至少在标题 大致 正确的方向,正确的…? 如果相关,则该模型具有两个关系: 问题答案: 因此,作为参考,我像这样解决了它: 奇怪的是,其中的子句需要语音标记才能使变量正确通过sql查询(同样,“ 2”似乎不起作用,而“ 2”却可以
我是Laravel5.2的新手,正在开发一个遗留系统,对雄辩有点困惑,希望有人能给我代码。 共有3个表格: 卡片类别卡片2类 卡片可以是许多类别的一部分,这些类别保存在cards2cat表中。 cards2cat表的结构如下 id(主键)图像(卡)类别 我想做的是在Cards模型中有一个方法,名为getCardsWithCategors,它返回Cards信息和category表中类别的名称。 ca