我想将用户ID存储在我的User
行的一列中,因为人们可以“关注”其他人。
因此,如果我是一个用户,则可以关注多个用户。我想以一种超级简单的格式存储[1, 5, 6]
该数据,例如存储在数据库中。
该Following
列是字符串格式:
$table->string('following');
我正在尝试通过运行以下命令来做到这一点:
$user = Auth::user();
$data = $request->all();
$follow = $data['follow'];
if(!empty($user->following)) {
$user->following = array_merge($user->following, array($follow));
} else {
$user->following = array($follow);
}
但是它通过 Parameter mismatch, pattern is a string while replacement is an array
我在laravel上构建的另一个系统上也以完全相同的方式进行了操作,并且一切工作都像一个魅力,所以我根本不明白为什么它不起作用。在到另一个系统的那个数据库中,数据如前所述被存储。
我不想大量序列化,因为这必须很简单,所以我可以
$following = User::whereIn('id', $user->following)->get();
foreach($follwing as $follow) {
...
}
我不认为这是最好的方法,但是这是我可以用自己的技巧扎根的唯一方法。欢迎其他建议!
这不是Laravel存储数据的方式。您应该创建一个新表来存储关注者的数据。
这可以通过many-to-many
在用户表本身之间创建关系来实现。
创建一个followers_following
表,其列为:
id | follower_id | following_id
在User
模型中创建两个关系函数为:
public function followers()
{
return $this->belongsToMany('App\User', 'followers_following', 'following_id', 'follower_id');
}
public function following()
{
return $this->belongsToMany('App\User', 'followers_following', 'follower_id', 'following_id');
}
然后,您可以查询用户为:
$user = User::find(1);
$user->followers;
$user->following;
要将数据保存在DB中,您可以执行以下操作:
$user->following()->attach($follow);
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句