Php Laravel 4雄辩:如何选择值在数组中的位置?

Php Laravel 4雄辩:如何选择值在数组中的位置?,php,laravel-4,eloquent,Php,Laravel 4,Eloquent,假设我有一个db记录如下的模型: row1: id: 1 users:["1","2","3"] row2: id: 2 users:["3","4","5"] Model::where('users', 'like', '%"'.$user_id.'"%')->get(); 用户是从json\u encode(数组($user\u id))格式化的数据。现在我想在users中检索模型ifuser\u id。因此,如果我的user\u id是2,我将只检索第1行,但是如果我的us

假设我有一个db记录如下的模型:

row1: id: 1  users:["1","2","3"] 
row2: id: 2  users:["3","4","5"]
Model::where('users', 'like', '%"'.$user_id.'"%')->get();
用户是从
json\u encode(数组($user\u id))
格式化的数据。现在我想在
users
中检索模型if
user\u id
。因此,如果我的
user\u id
是2,我将只检索第1行,但是如果我的
user\u id
是3,我将同时检索
row1
row2


我尝试了类似于
Model::where('users',$user_id)->get()的方法
,它不起作用,有没有其他方法来实现这一雄辩的方式?

希望您在会话或其他内容中存储您的用户id,因此您的id指的是分配给您自己的id

Model::where('id','!=',your_id)->get();

这将返回您的所有行,除了id=your_id

我认为没有一种非常有说服力的方法可以做到这一点。但由于您使用json_encode,我们可以假设所有数据的格式都相同,并执行如下操作:

row1: id: 1  users:["1","2","3"] 
row2: id: 2  users:["3","4","5"]
Model::where('users', 'like', '%"'.$user_id.'"%')->get();

这应该行得通。您的情况通常最好使用透视表来处理,但当然您不必像其他人所说的那样使用透视表。

我想您误解了我的问题,我试图根据
用户
列而不是
id
列来检索模型(该
id
$user\u id
无关,它是模型本身的id)。这不是最佳实践,您必须实现透视表概念。否则检索和处理。这种方法第一次出现在我的脑海中,不幸的是,当我有这样的数据['13'、'14'、'24']时,$user\u id=1仍然有效(好吧,因为我意识到没有真正的方法可以做到这一点,我已经重新设计了我的表,谢谢你的回答)不,它没有。它实际上查找
“1”
,前后都有。你的示例不包含
“1”
,所以它在示例数组中找不到13、14或24。但我很高兴你找到了解决方案!:)