mysql - 排除 mysql 中包含没有 NOT LIKE 运算符的年份的行

标签 mysql laravel eloquent

我有一个包含标签的表。几乎所有标签都是类型(例如 Action 和喜剧)。不过,还有诸如 Winter 2014Summer 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/

相关文章:

php - 如何使 Laravel 的验证器 $rules 可选?

laravel - 使用多个 Docker 容器时无法清除 Laravel 缓存

php - 将数据保存到数据库

mysql - 使用 Group by Mysql 显示所需的结果

跨多个相似 View 的 MySQL 查询

php - Laravel 5.4 : Eloquent. 查找最近的日期

php - 如何(重新)组织这些数据 - Lumen/Laravel

c# - 使用 Entity Framework 6.0 在 gridView 中显示 Table 的特定列

php - 通过 laravel 中的 timthumb php 脚本定义一个路由来显示图像

php - Laravel Eloquent ORM 多对多搜索查询