- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个 belongsToMany 标签和类别的产品表。标签和类别也属于 ToMany 产品。
我正在尝试实现一种搜索功能,该功能将包括搜索参数与标记产品、分类产品以及任何产品的标题或描述相匹配的所有产品。
这是我 Controller 中的内容:
public function index()
{
$this->paginate = [
'sortWhitelist' => [
'Products.title',
'Products.msrp',
'Products.sale_price',
],
'limit' => 48,
'order' => ['Products.title' => 'asc']
];
$products = $this->Products->find();
if ($search = $this->request->query('search')) {
$matchingCategories = $this->Products->find()->matching('Categories', function ($q) use ($search) {
return $q->where(['Categories.name LIKE' => "%$search%"]);
});
$matchingTags = $this->Products->find()->matching('Tags', function ($q) use ($search) {
return $q->where(['Tags.name LIKE' => "%$search%"]);
});
$products
->where(['Products.title LIKE' => "%$search%"])
->orWhere(['Products.description LIKE' => "%$search%"])
->orWhere(['Products.id IN' => $matchingCategories])
->orWhere(['Products.id IN' => $matchingTags]);
}
$this->set('products', $this->paginate($products));
$this->set('_serialize', ['products']);
}
您可以从某种程度上看出我在这里试图完成的事情,但显然行不通。我可以让等式的任何一部分起作用,这意味着我可以得到具有匹配类别的产品,或者具有匹配标签的产品,或者在标题或描述中具有匹配的产品,但我无法获得适合搜索的所有产品在任何这些部分。
最佳答案
看起来我所要做的就是像这样在子查询中选择 id 字段:
$matchingCategories = $this->Products->find()->select(['Products.id'])->matching('Categories', function ($q) use ($search) {
return $q->where(['Categories.name LIKE' => "%$search%"]);
});
注意:我愿意接受改进建议。
关于php - Cakephp 3 belongsToMany 子查询搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41653836/
我有两个模型:用户和经济事件。它们通过 UserEconomicActivity 关联(这是一个 BelongsToMany 关系)。在 User 模型中,我定义了这样的关联: this.belong
考虑下表: user id name client id name user_client user_id client_id rate ... 我希望我的 Contr
给定以下 belongsToMany 关系: 标签模型: class Tag extends Model { public function posts (){ return
假设我有以下模型: const Item = sequelize.define("Item", { active: { type: DataTypes.BOOLEAN, defaultValu
我使用了 Sequelize 并使用 belongsToMany() 设置了多对多关系。但是,当我查询出数据时,像这样: api.models.operator.find({ where:
在Laravel中定义多对多关系时,使用belongsToMany()或hasManyThrough()有什么区别? 例:UserAccountAccount_User 因此,用户通过Account_
我有两个带有数据透视表的表(用户和饮料),用户与配置文件表有 hasOne 关系,有没有办法将配置文件表附加到数据透视表并获取所有数据。 表格用户 id | name | email 表格配置文件 i
我有两个带有数据透视表的表(用户和饮料),用户与配置文件表有 hasOne 关系,有没有办法将配置文件表附加到数据透视表并获取所有数据。 表格用户 id | name | email 表格配置文件 i
我有两个表具有 belongsToMany 关系。数据透视表还包含一个名为 state 的列,它可以有 3 个不同的值。假设我的表是 Table1 和 Table2。 具有不同状态的相同Table1-
所以我有一个名为 thread_user 的数据透视表,并且有两个模型; User.php 和 Thread.php。 我的 User.php 文件中有这个: public function thre
我在 PostgreSQL 上使用 Sequelize 来存储属于组织的用户。组织拥有用户可以访问的设备。因此,从本质上讲,用户也通过他们的组织拥有设备。 我将其设置为每个设备都使用 organiza
我正在 Laravel 中实现多对多关系。这些实体是:用户角色和数据透视表 user_role Users ==== id name ..... roles ==== id role ... u
我试图建立多对多的关系,在这个例子中是用户和角色。 在用户模型中我得到了这个: public function roles() { return $this->belongsToMany('A
我有如下三个表: 用户 id|名称|用户名|密码 角色 编号|名称 用户角色 id|user_id|role_id 这些表通过 belongsToMany 进行通信。我想找到一种方法来选择“users
我的项目中有 belongsToMany 关系: 公共(public)函数产品() { 返回 $this->belongsToMany(Product::class,'order_products',
我有以下模型。 class Training extends \Eloquent { // Add your validation rules here public static $
所以我通过数据透视表 user_photo 在 Users 和 Photos 之间建立了多对多关系。我在我的用户模型中使用 belongsToMany('Photo')。然而,这里的问题是我的照片表中
我有这个给定的表结构: 如何使用 Eloquent 从我的“visita”类访问“curso.name”?我分配了多对多关系,但只能访问“turma.curso_id”,但我想得到类似 $visita
使用 sequelize,我期望这一行: m.User.belongsToMany(m.Company, {through: 'UserCompany'}); 在我的数据库中生成一个名为“user_c
我有两个表:categories 和 videos,然后我有一个数据透视表,因为它们是 belongsToMany 关系。 我想要做的是获取所有视频,其中没有一个视频实例属于多个类别之一。 例如 视频
我是一名优秀的程序员,十分优秀!