我有一个包含标签的表。几乎所有标签都是类型(例如 Action 和喜剧)。不过,还有诸如 Winter 2014
和 Summer 2012
之类的标签。这些是季节性标签。
我想从流派列表中排除这些标签。那么如何在查询中排除这些季节性标签呢?
我不想使用 NOT LIKE
运算符的原因是为了防止全表扫描。
这就是我目前所拥有的( Eloquent 地):
$genres = Tag::where('slug', 'not like', '%20%')->get()->lists('name');
旁注:laravel 4( Eloquent )方法将受到赞赏,但不是必需的。
这是我的 table
+---------+------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+---------+------------------+------+-----+---------+----------------+
| id | int(10) unsigned | NO | PRI | NULL | auto_increment |
| slug | varchar(255) | NO | MUL | NULL | |
| name | varchar(255) | NO | | NULL | |
| suggest | tinyint(1) | NO | | 0 | |
| count | int(10) unsigned | NO | | 0 | |
+---------+------------------+------+-----+---------+----------------+
最佳答案
如果我是您,我会向此表添加 seasonal tinyint(1)
字段,现在您只需运行:
$genres = Tag::whereSeasonal(0)->get()->lists('name');
获取非季节性标签。
如果你做不到这一点,你可以将季节性标签的 id 存储在 PHP 数组中(或在另一个表中) - 我不知道你有多少标签以及添加季节性标签的频率,然后你可能会得到非-季节性标签:
$genres = Tag::whereNotIn('id', $arrayOFSesonalIds)->get()->lists('name');
关于mysql - 排除 mysql 中包含没有 NOT LIKE 运算符的年份的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27080900/