[英]How can I inject different Eloquent Models into the method of a trait?
我希望在Laravel 5应用程序中跨控制器保持干燥。 我选择的路线是将Trait与可以应用于我的单独控制器的方法一起使用。
我的Trait中的方法需要作用于不同的Model类。 它们始终是Eloquent模型的子类 。
这是我的尝试:
<?php namespace Conjunto\Traits;
use Illuminate\Database\Eloquent\Model;
trait SortableTrait
{
/**
*
*/
public function upPosition(Model $model)
{
dd($model);
}
}
不幸的是,由于Eloquent模型本身无法实例化,因此出现以下错误:
目标[Illuminate \\ Database \\ Eloquent \\ Model]无法实例化。
我如何仍可以使用Trait进行这项工作?
解决方案是将具体模型注入构造函数中,将其设置为属性,然后在Trait的upPosition方法中使用此属性。
controller UserController
{
protected $model;
use SortableTrait;
public function __construct(User $user)
{
$this->model = $user;
}
}
现在,在您的特征中,您应该将方法更改为:
public function upPosition()
{
dd($this->model);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.