laravel 5.1使用Lazy Eager的用法

alone_only

我正在开发支持票证工具。目前的表格设计:

tickets: |id|supp_id|title|user_id|...

ticket_replies: |id|ticket_id|user_id|text

files: |id|ticket_replie_id|name

机票型号

public function ticket_replie() 
{
    return $this->hasMany('App\ticket_replie', 'ticket_id', 'id');
}

ticket_replie的模型

public function file() 
{
        return $this->hasOne('App\File', 'ticket_replie_id', 'id');
}

控制器

$ticket = Auth::user()->tickets()->where('id', $id)->firstOrFail();
   return view('protected.ticketDetail', compact('ticket'));

看法

    ID: {{$ticket->id}}
    title: {{ $ticket->title}}<br>
    status: {{ returnStatus($ticket->status) }}<br>
    Ticket created: {{ $ticket->created_at }}<br>


    @if (!$ticket->supporter)
        supporter:-<br></br></br>
    @else
        supporter  {{ $ticket->supporter->username }}<br></br>
    @endif

    @foreach($ticket->ticket_replie as $reply)
        @if ($reply->file == null)
            reply text: {{ $reply->text }}</br>
        @else
            reply text: {{ $reply->text }}</br>
            file: <a href="/path/to/file/{!! $reply->file->name !!}">Download file</a><br>
        @endif
    reply created at: {{$reply->created_at}}</br></br>
    @endforeach 

当前查询屏幕: 查询调试

每个ticket_replie可以只包含一个“文件”,代表一个附加文件。正如您可能在查询中看到的那样,这会产生很大的负载。有没有一种方法可以使用(laravel Lazy Eager Loading)来减少查询量?

通过以下方式订购ticket_replies:

   $ticket = Auth::user()->tickets()->where('id', $id)->with(['ticket_replie.file'])->firstOrFail();

   $ticket->sortBy('ticket_replie.created_at');

   $ticket->values();
迈克·米勒

在控制器中,类似这样的事情应该可以完成...

$ticket = Auth::user()->tickets()->where('id', $id)->with(['ticket_replie.file'])->firstOrFail();

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Laravel 5 eager loading with limit

来自分类Dev

Laravel 5使用声明

来自分类Dev

使用NPM的Laravel 5的AngularJS

来自分类Dev

Laravel 5使用AJAX的jQuery

来自分类Dev

使用 Laravel 5 的 cURL 问题

来自分类Dev

Laravel 5:使用SHA1代替Bcrypt

来自分类Dev

在 Laravel 中使用 Eager Loading 的查询构建器 Eloquent

来自分类Dev

如何在Laravel 4中同时使用Eager的Eager Load和Join

来自分类Dev

如何在laravel 4中同时使用Eager的Eager Load和Join

来自分类Dev

Laravel雄辩的5.3带有多个限制的Eager / Lazy loading相关模型

来自分类Dev

Laravel 5使用消息重定向

来自分类Dev

如何使用Codeception测试laravel 5 API?

来自分类Dev

在laravel 5中使用设计模式

来自分类Dev

Laravel 5-模板的多次使用

来自分类Dev

如何使用Laravel 5登录用户

来自分类Dev

TDD和Laravel 5中View的使用

来自分类Dev

Laravel 5在模型中使用orderBy()

来自分类Dev

Laravel 5使用外键插入行

来自分类Dev

使用链接和Laravel 5删除/销毁

来自分类Dev

在laravel5中使用memcached

来自分类Dev

Laravel 5使用前缀进行路由

来自分类Dev

使用Laravel 5上传pdf文件

来自分类Dev

laravel 5验证库使用什么?

来自分类Dev

使用AJAX创建LIKE按钮-laravel 5

来自分类Dev

如何使用laravel5 Ajax发布

来自分类Dev

Laravel5不能使用包

来自分类Dev

在Laravel 5中使用TermExtractor

来自分类Dev

在laravel5中使用memcached

来自分类Dev

在PHP函数内部使用变量(Laravel 5)