无法在laravel数据库中存储简单数组

帕特里克

我想将用户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) {
...
}

我不认为这是最好的方法,但是这是我可以用自己的技巧扎根的唯一方法。欢迎其他建议!

阿米特·古普塔(Amit Gupta)

这不是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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章