Laravel Eloquent 关联模型查询缓存数据

Laravel Eloquent Super Relations

安装

# composer.json

"minimum-stability": "dev",
"prefer-stable": true,
$ composer require al-one/eloquent-super-relations -vvv

使用

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;
use Alone\EloquentSuperRelations\HasSuperRelations;

class User extends Model
{

    use HasSuperRelations;

    public function profile()
    {
        return $this->hasOne('App\Profile','uid');
    }

    public function eagerLoadProfile($relation,$models = [],$where = [])
    {
        // Get cached data for relation
        if(!empty($where['uid']))
        {
            return cache()->remember("user:profile:{$where['uid']}",86400,function() use($where) {
                return Profile::find($where['uid']);
            });
        }
        // return null for get from database
        return null;
    }
}
本作品采用《CC 协议》,转载必须注明作者和本文链接
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
讨论数量: 6

没看出来怎么用?function profile() 和function eagerLoadProfile()是要一起使用?

3年前 评论

@609468798 profile()是指定关联模型,eagerLoadProfile()是在查询profile关联数据的时候调用的。

3年前 评论

@609468798 是的,eagerLoad{RelationName}()

3年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!