Laravel雄辩地从sql中找到数组

时间:2015-01-20 21:21:17

标签: php mysql sql laravel eloquent

我正在使用Laravel 4.2开发一个网站。我有两个表:文章标签

这是我的标记表格:

id | article_ids | xxxx
2  | 2,41,23,6   | xxxx

我正在使用Eloquent,我想在article_ids列中找到一个特定的id。 我怎样才能做到这一点?

我可以像这样搜索MySQL吗?

感谢您的帮助。抱歉我的英语不好。

2 个答案:

答案 0 :(得分:2)

几乎所有事情都已经说过 - 糟糕的设计,你应该避免它等等。这是真的,我同意。

以正确的方式行事。但是,这是在MySQL中完成的方式:

// say you want tags related to articles 2 and 23

SELECT * FROM tags
WHERE FIND_IN_SET('2', article_ids)
AND FIND_IN_SET('23', article_ids);

// Eloquent
Tag::whereRaw(
   'find_in_set(?, article_ids) and find_in_set(?, article_ids)',
   [$id1, $id2] // bindings array
)->get();

答案 1 :(得分:0)

这是一种将标签与文章相关联的非常糟糕的方式,正如您刚刚发现的那样,因为它无法轻易查询。相反,对于两者之间的多对多关系,您需要一个包含article_idtag_id列的中间表。对于包含四个标签的文章,有四个记录,每个记录一个。