我想将用户标识存储在我的User
行的一列中,因为人们可以“跟随”其他人。在laravel数据库中存储简单数组
所以如果我是一个用户,我可以关注多个用户。这个我想以超级简单的格式存储,如数据库中的[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上,并且在那里一切都像魅力一样,所以我根本不明白为什么这不起作用ING。在该数据库中的其他系统中,数据如前所述存储。
我不想很多序列化,因为这必须是简单的,所以我可以做一个
$following = User::whereIn('id', $user->following)->get();
foreach($follwing as $follow) {
...
}
我不认为这是做的最好的方式,但是这是我能的唯一途径用我的技能缠住我的头。其他建议大多是欢迎的!
为什么不创建另一个表有两列:USER_ID(一以下),并follow_id(他们是按照用户的ID)。然后,您可以使用hasMany关系来获取某人正在关注的用户。 – aynber
你可以使用$ table-> json('following');而不是字符串并将数据存储为json。和json_decode同时获取数据。在Laravel 5.3中,你也可以通过json查询。 –