我在laravel
上有一个简单的模型,我想使用PHP面向对象来保存或更新Controller
内部的数据。我的解决方案的所有方法都很好,但我无法重定向。
型号
class RechargeRangeCard extends Model
{
protected $table = "recharge_range_cards";
protected $guarded = ['id'];
private $request;
public function data(StoreRechargeRangeCard $request)
{
$this->request = $request;
return $this;
}
public function store()
{
$data = RechargeRangeCard::create(
[
'minimum' => $this->request->input('minimum_range'),
'maximum' => $this->request->input('maximum_range'),
'user_id' => Auth::user()->id,
]
);
return $this;
}
public function redirect()
{
return redirect()->to('rechargeRangecards');
}
}
控制器
public function store(StoreRechargeRangeCard $request)
{
$class = new RechargeRangeCard();
$class->data($request)->store()->redirect();
}
在这种链接方法中,redirect()
不起作用。
您必须从Controller方法返回重定向才能使其工作:
public function store(StoreRechargeRangeCard $request)
{
$class = new RechargeRangeCard();
return $class->data($request)->store()->redirect();
}
然而,我想指出的是,这混合了你们的担忧。重定向是控制器严格关注的问题;你的模型不应该对此有任何线索,甚至不应该认为这是可能的。