Php 拉威尔全局变量
我有一个简单的代码,向用户显示他从数据库收到的所有通知:Php 拉威尔全局变量,php,laravel,Php,Laravel,我有一个简单的代码,向用户显示他从数据库收到的所有通知: $user\u notifications=DB::table('notifications')->where('user\u id',$this->user->id)->orderBy('id','desc')->get(); 问题是我有太多的控制器和函数,我不想在每个函数和控制器的任何地方重复这些代码。如何使$user\u notifications变量成为全局变量并在任何地方使用它?您需要创建一个NotificationRepos
$user\u notifications=DB::table('notifications')->where('user\u id',$this->user->id)->orderBy('id','desc')->get();
问题是我有太多的控制器和函数,我不想在每个函数和控制器的任何地方重复这些代码。如何使
$user\u notifications
变量成为全局变量并在任何地方使用它?您需要创建一个NotificationRepository
class NotificationsRepository
{
private Notifications $model;
public function __construct(Notification $model)
{
$this->model = $model;
}
public function findByUserId(int $userId): Collection
{
return $this->model->where('user_id', $userId)->orderBy('id', 'desc')->get();
}
}
然后在控制器操作中,通过自动连线添加此存储库
class SomeController extends Controller
{
public function someAction(NotificationRepository $repository, int $id)
{
$notifications = $repository->findByUserId($id);
}
}
或者这样,我不知道你是如何运用你的行动的
class SomeController extends Controller
{
public function someAction(NotificationRepository $repository, Illuminate\Http\Request $request)
{
$notifications = $repository->findByUserId($request->user()->id);
}
}
为这段代码创建一个新函数或类有什么不对?请阅读关于抽象的内容。