我现在陷入困境,希望有人能帮我。我正在使用多态关系,并且想要在数据库中搜索满足“父”表和“子”表中条件的行。
为了具体说明,举一个小例子。给定以下结构,例如,我想寻找价格为“600”、房间为“3”的房产。有没有办法通过雄辩来做到这一点?
表属性(父级)
餐桌公寓(儿童)
桌子包裹(儿童)
类别属性
public function details() {
return $this->morphTo();
}
Run Code Online (Sandbox Code Playgroud)
课程 公寓 + 地块
public function property() {
return $this->morphMany('Property', 'details')
}
Run Code Online (Sandbox Code Playgroud)
很多,真的。但不知何故,我总是做错事或错过一些事。我认为应该有效的解决方案是:
Property::with(array('details' => function($query) {
$query->where('rooms', 3);
}));
Run Code Online (Sandbox Code Playgroud)
或者
Property::with('details')
->whereHas('details', function($query) {
$query->where('rooms', '=', '3');
});
Run Code Online (Sandbox Code Playgroud)
但在这两种情况下我都会收到以下 FatalError:
Class name must be a valid object or a string
Run Code Online (Sandbox Code Playgroud)
你们中有人已经遇到过类似的问题吗?非常感谢您的任何提示。
我今天第一次尝试了feathers-sequelize,现在已经在hasMany协会上挣扎了几个小时。
我想做一个简单的projects
(>hasMany>)issues
关系,但我刚刚遇到第一个问题。
期望的输出:
{
"id": 1,
"name": "Project 1",
"issues": [
{"id": 1,
"title": "Issue 1"},
{"id": 2,
"title": "Issue 2"},
]
}
Run Code Online (Sandbox Code Playgroud)
实际输出:
{
"id": 1,
"name": "Project 1",
"issues.id": 1,
"issues.title": "Issue 1",
}
Run Code Online (Sandbox Code Playgroud)
我使用feathers-cli (v3.6.1) 生成了服务并添加了前钩以包含问题。我的模型看起来像这样
项目.model.js:
module.exports = function (app) {
const sequelizeClient = app.get('sequelizeClient');
const projects = sequelizeClient.define('projects', {
id: { type: Sequelize.INTEGER(10).UNSIGNED, autoIncrement: true, primaryKey: true},
name: Sequelize.STRING,
},
{
hooks: {
beforeCount(options) {
options.raw = true;
}
}
}); …
Run Code Online (Sandbox Code Playgroud)