首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Laravel可追溯史上的期望负载相关模型

问Laravel可追溯史上的期望负载相关模型
EN

Stack Overflow用户
提问于 2017-09-26 19:31:34
回答 2查看 548关注 0票数 1

使用Laravel5.4和风险技术/可修正软件包。

我有三种型号:User,Company和Order。

Order模型实现了可还原特性:

代码语言:javascript
复制
namespace App\Models;

class Order extends Eloquent {
    use \Venturecraft\Revisionable\RevisionableTrait;

    // ...
}

User模型与Company模型有关系:

代码语言:javascript
复制
public function company() {
    return $this->belongsTo('App\Models\Company');
}

我很想从订单修改中加载用户的公司。就像这样

代码语言:javascript
复制
$order = Order::with('revisionHistory.user.company')->find(1);

foreach($order->revisionHistory as $revision) {
    $company = $revision->user->company;
}

我尝试过从Revisionable特性覆盖各种方法(例如revisionHistory和identifiableName),没有任何结果。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-09-27 19:53:36

我认为这与目前版本的一揽子方案是不可能的。

原因是userResponsible()不是一个实际的关系,它只是一个返回User模型实例的函数。

为了允许紧急加载,需要这样的内容:

代码语言:javascript
复制
public function userResponsible()
{
    if (class_exists($class = '\Cartalyst\Sentry\Facades\Laravel\Sentry')) {
        return $this->belongsTo(Config::get('sentry::users')['model'], 'user_id');
    } else if (class_exists($class = '\Cartalyst\Sentinel\Laravel\Facades\Sentinel')) {
        return $this->belongsTo(Config::get('sentinel::users')['model'], 'user_id');
    } else {
        return $this->belongsTo(Config::get('auth.model'), 'user_id');
    }
}

然后,您就可以像这样急切地加载:

代码语言:javascript
复制
$order = Order::with('revisionHistory.userResponsible.company')->find(1);

您可以在GitHub中查看原始问题。

票数 1
EN

Stack Overflow用户

发布于 2017-09-27 15:27:26

您可以使用$company = $revision->userResponsible()->company来获得更改Order的User公司。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46434419

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档