2014-06-28 29 views
0

假设我有与数据库记录模型是这样的:Laravel 4雄辩:如何选择数组中的值?

row1: id: 1 users:["1","2","3"] 
row2: id: 2 users:["3","4","5"] 

用户从json_encode(array($user_id))格式的数据。现在我想检索模型,如果user_idusers。所以,如果我的user_id是2,我将只检索第1行,但如果我的user_id是3,我将同时检索row1row2

我想是这样Model::whereIn('users', $user_id)->get();,这是行不通的,任何其他的方法来实现这一雄辩的语言?

回答

2

希望你在会话中存储或东西你的用户ID,所以YOUR_ID是指分配给自己的ID。

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

这将返回所有的行,除了ID = YOUR_ID

+0

我想你是误会我的问题,我试图找回基于'users'列,而不是'id'列的模型(即'id'无关用'$ user_id',它的id模型本身)。 – user2002495

+1

那不是最佳实践,您必须实施数据透视表概念。否则检索和处理。 – thegeekajay

0

我不认为有这样做的一个非常雄辩的语言。但是,由于您使用json_encode,我们可以假设所有数据被格式化以同样的方式,而做这样的事情:

Model::where('users', 'like', '%"'.$user_id.'"%')->get(); 

这应该工作。你的情况通常用数据透视表最好处理,但当然你不用就可以像其他人说的那样使用它们。

+0

这种方法第一次出现在我的脑海里,不幸的是,当我有这样的数据['13','14','24']时,$ user_id = 1仍然很重要(嗯,因为我意识到没有真正的方法做到这一点,我已经重新设计了我的桌子,谢谢你的回答) – user2002495

+0

不,它没有。它从字面上寻找''“1”'',前后都有。你的例子不包含''“1”'',所以它不会在你的例子数组中找到13,14或24。但我很高兴你找到了解决方案! :) –