使用Laravel5.4和风险技术/可修正软件包。
我有三种型号:User,Company和Order。
Order模型实现了可还原特性:
namespace App\Models;
class Order extends Eloquent {
use \Venturecraft\Revisionable\RevisionableTrait;
// ...
}User模型与Company模型有关系:
public function company() {
return $this->belongsTo('App\Models\Company');
}我很想从订单修改中加载用户的公司。就像这样
$order = Order::with('revisionHistory.user.company')->find(1);
foreach($order->revisionHistory as $revision) {
$company = $revision->user->company;
}我尝试过从Revisionable特性覆盖各种方法(例如revisionHistory和identifiableName),没有任何结果。
发布于 2017-09-27 19:53:36
我认为这与目前版本的一揽子方案是不可能的。
原因是userResponsible()不是一个实际的关系,它只是一个返回User模型实例的函数。
为了允许紧急加载,需要这样的内容:
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');
}
}然后,您就可以像这样急切地加载:
$order = Order::with('revisionHistory.userResponsible.company')->find(1);您可以在GitHub中查看原始问题。
发布于 2017-09-27 15:27:26
您可以使用$company = $revision->userResponsible()->company来获得更改Order的User公司。
https://stackoverflow.com/questions/46434419
复制相似问题