在一个控制器中调用另一个控制器中的del方法
我在删除经销商的时候,需要删除与经销商相关的跟进记录等,跟进记录有自己的表和控制器DistributorFollowController,里面有del方法,我想在经销商控制器DsitributorController中调用跟进记录里的del方法:
DistributorFollowController的del方法:
public function del(Request $request){
$id=$request->id;
if(empty($id)){
return self::err('跟进情况id不能空');
}
$follow = DistributorFollow::find($id);
//先判断是否超过7天
$created_at = $follow->created_at;
$now=strtotime(Carbon::now());
$created_at=strtotime($created_at);
if(($now-$created_at) > 7*3600*1000){
return self::err('超过7天不能操作');
}
if($follow){
$res = $follow->delete();
$follow->comments()->delete();
if($res){
return self::ok();
}else{
return self::err();
}
}
return self::err('没有此id对应的跟进情况');
}
我在DistributorController中是想这样调用:
$d_follow = new DistributorFollowController($request);
$d_follow->del(new Request());
但是需要在new DistributorFollowController的时候传入$request,del方法也需要接受$request作为参数,写到这里不知道该怎么做了。请各位指点一二
控制器里不应该写业务的 应该抽象出公共库来
控制器不能相互调用 :unamused: 想要复用最简单的方法是写到model里面 或者写个公共的业务逻辑处理
laravel核心思想是分层,Controller 控制器负责接收和转发请求,不进行业务处理,业务实现应该是Service服务层
我猜你是从TP转laravel的吧,搜索一下laravel的关联关系,应该能解决你的问题
这个我知道,我有个歪门邪道。看代码:
再推荐一个合理的,也就是封装到 Service 里,
骚里骚气 :cry:
写个模型不就完了,调啥控制器,tp转过来的,哈哈
博客:laravel常用代码库:Carbon日期及时间处理包-年月日操作完整版常用方...
删除直接写到模型里面,关联删除触发事件,只是拿某个模型优雅点可以不用 request 参数,
其他情况去处理异常就好了。
评论看了一遍,建议你直接了解容器创建新的资产 App::make函数存在的意义
观察者(observer)模式或许可以帮助你解耦
app()-》make()??