求大佬看看关联表的查询,可以怎么优化优化?
public function index(Request $request)
{
$res = Article::orderBy('id', 'desc')->where('is_delete', 0)->where(function ($query) use ($request) {
if (!empty($request->time_start) && !empty($request->time_end)) {
$query->where('created_at', '>=', $request->time_start)
->where('created_at', '<=', $request->time_end);
}
if (!empty($request->keyword)) {
$query->where('title', 'like', "%{$request->keyword}%")->orWhere('content', 'like', "%{$request->keyword}%");
}
if (!empty($request->tag)) {
$query->where('tag_id', 'like', "%{$request->tag}%");
}
if (!empty($request->type)) {
$query->where('articleType_id', $request->type);
}
if (!empty($request->user)) {
$query->where('user_id', $request->user);
}
})->simplePaginate(10);
// $user_id = session('userInfo')['id'];
foreach ($res as $k => $v) {
$v->user = User::find($v->user_id)->first();
$v->user->headpic = asset($v->user->headpic);
$v->typename = ArticleType::find($v->articleType_id)->typename;
$ArticleUp = ArticleUp::select('type')->where('article_id', $v->id)->where('user_id', $v->user_id)->first();
if ($ArticleUp) {
$v->is_up = $ArticleUp->type;
} else {
$v->is_up = '';
}
$save = ArticleSave::where('article_id', $v->id)->where('user_id', $v->user_id)->first();
if ($save) {
$v->is_save = true;
} else {
$v->is_save = false;
}
}
return DataReturn::ReturnJson('success', $res);
}
求大佬给优化优化写法,总是感觉这么写不太好,
欢迎指正
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
看了下你写的,变量名称乱七八糟,而且循环获取单个模型变量?推荐看下laravek 预查询,这里你的这种写法我给你稍微优化你看看,修改了部分参数,不要全部复制,明白主题意思即可
如果
Article
表的数据量只有几千上万,这样写没有什么不好的。