我想使用模型来查询数据,所以我定义了这样的模型关系:
在分类
中 $this->hasManyToMany(
"id",
"App\\Models\\CategoriesContents",
"category_id",
"content_id",
"App\\Models\\Contents",
"id",
["alias" => "contents"]
);
在CategoriesContents
中 $this->belongsTo(
"category_id",
"App\\Models\\Categories",
"id",
["alias" => "category"]
);
$this->belongsTo(
"content_id",
"App\\Models\\Contents",
"id",
["alias" => "content"]
);
在目录
中 $this->hasManyToMany(
"id",
"App\\Models\\CategoriesContents",
"content_id",
"category_id",
"App\\Models\\Categories",
"id",
["alias" => "categories"]
);
我必须按名称排序,内容表中的名称,我在类别表中有一个条件。
有没有人知道如何使用默认的where
和order by
子句查询关系?
答案 0 :(得分:1)
以下是与自定义参数关系的完整示例:
$(shell /usr/local/bin/wx-config --cxxflags)
the documentation 还有更多方法。
您与订购的第一个关系和where子句如下所示:
Project settings->Linker->Linker Options
答案 1 :(得分:0)
我有解决方案,但我不认为这是最好的方法 我在内容模型中添加了这个功能
public function find_extended($paramsMain, $paramsRelated, $limit=30, $offset=10)
{
//Define output
$outputs = [];
$index = 0;
$contents = self::find($paramsMain);
foreach($contents as $content)
{
$contentData = $content->toArray();
$categories = $content->getCategories($paramsRelated)->toArray(); // use above parameters to search and sort as you wish
if (!empty($categories)) {
$contentData["categories"] = $categories;
if ($index >= ($limit+$offset)) {
return $outputs;
}
if ($index >= $offset) {
$outputs[] = $contentData;
}
$index++;
}
}
return $outputs;
}