Php Laravel 4雄辩:如何选择值在数组中的位置?
假设我有一个db记录如下的模型: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
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行,但是如果我的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。但我很高兴你找到了解决方案!:)