#laravel #datatable #repository
#laravel #datatable #репозиторий
Вопрос:
у меня возникли проблемы с доступом к репозиторию, я не могу вызывать функции. Я пытаюсь интегрировать кнопку softdelete в мои данные MailMessages, но я не могу использовать репозиторий, я получил следующее сообщение:
Класс ReflectionException app Repositories MailMessageRepository не существует
Мой MailMessageController
<?php
namespace AppHttpControllers;
use AppDataTablesMailMessageDataTable;
use AppHttpRequestsMailMessageRequest;
use appRepositoriesMailMessageRepository;
use AppMailMessage;
use IlluminateHttpRequest;
use DataTables;
use PulkitJalanGoogleFacadesGoogle;
class MailMessageController extends Controller
{
protected $mailMessageRepository;
/**
* UserController constructor.
* @param $mailmessageRepository
*/
public function __construct(mailmessageRepository $mailmessageRepository)
{
parent::__construct();
$this->MailMessageRepository = $mailmessageRepository;
}
/**
* Display a listing of the resource.
*
* @return IlluminateHttpResponse
*/
public function index(MailMessageDataTable $MailMessageDataTable)
{
return $MailMessageDataTable->render('mailmessage.index');
}
/**
* Show the form for creating a new resource.
*
* @return IlluminateHttpResponse
*/
public function create()
{
// $MailMessage = $this->MailMessageRepository;
return view('mailmessage.create');
}
/**
* Store a newly created resource in storage.
*
* @param IlluminateHttpRequest $request
* @return IlluminateHttpResponse
*/
public function store(MailMessageRequest $request)
{
$MailMessage = $this->MailMessageRepository->saveMailMessage($request);
return redirect()->route('MailMessage.show', ["id" => $MailMessage->id])
->with(["message" => __('messages.create.success')]);
}
/**
* Display the specified resource.
*
* @param AppMailMessage $mailMessage
* @return IlluminateHttpResponse
*/
public function show($id)
{
$MailMessage = MailMessage::find($id);
return view('MailMessage.show', ['MailMessage' => $MailMessage]);
}
/**
* Show the form for editing the specified resource.
*
* @param AppMailMessage $mailMessage
* @return IlluminateHttpResponse
*/
public function edit($id)
{
$MailMessage = MailMessage::find($id);
return view('MailMessage.edit', ['MailMessage' => $MailMessage]);
}
/**
* Update the specified resource in storage.
*
* @param IlluminateHttpRequest $request
* @param AppMailMessage $mailMessage
* @return IlluminateHttpResponse
*/
public function update(Request $request, $id)
{
$MailMessage = MailMessage::find($id);
$MailMessage->type = $request->type;
$MailMessage->description = $request->description;
$MailMessage->from_value = $request->from_value;
$MailMessage->to_value = $request->to_value;
$MailMessage->update();
return redirect('MailMessage/' .$MailMessage->id)->with(["message" => __('messages.edit.success')]);
}
/**
* Remove the specified resource from storage.
*
* @param AppMailMessage $mailMessage
* @return IlluminateHttpResponse
*/
public function destroy($id)
{
$MailMessage = $this->MailMessageRepository->getMessagebyId($id, true);
if ($MailMessage->trashed()) {
$MailMessage->restore();
}else{
$MailMessage->delete();
}
return redirect()->route('MailMessage.index')
->with(["message" => __('messages.update.success')]);
}
public function digest_report(MailMessage $mailMessage)
{
}
}
мой MailMessageRepository
<?php
namespace AppRepositories;
use AppUser;
use AppMailMessage;
use AppEnumsMailMessageType;
use IlluminateSupportFacadesAuth;
class MailMessageRepository
{
public function getMessage($id, $trashed = false)
{
if($trashed){
return MailMessage::withTrashed();
}
return MailMessage;
}
public function getMessageById($id, $trashed = false)
{
if ($trashed) {
return MailMessage::withTrashed()->with('roles')
->where('id', '=', $id)->first();
}
return MailMessage->where('id', '=', $id)->first();
}
public function deleteMailMessage($id)
{
$MailMessage = MailMessage::find($id);
$MailMessage->delete();
}
public function saveMailMessage($request)
{
$MailMessage = new Message($request->all());
$MailMessage->save();
return $MailMessage;
}
public function setOAuthAccessToken($accessToken)
{
}
public function updateMailMessage($request, $id) {
}
}
Ответ №1:
Возможно, что-то не так, вы объявляете переменную mailMessageRepository, поэтому вам нужно использовать $this->mailMessageRepository
public function __construct(mailmessageRepository $mailmessageRepository)
{
parent::__construct();
$this->MailMessageRepository = $mailmessageRepository;
}
попробуйте это
public function __construct(MailMessageRepository $mailmessageRepository)
{
parent::__construct();
$this->mailMessageRepository = $mailmessageRepository;
}
и попробуйте заменить все $this-> MailMessageRepository на $this-> mailMessageRepository в вашем коде
Комментарии:
1. Я получил ту же ошибку: (Аргументы «Класс app Repositories MailMessageRepository не существует»
2. вместо этого используйте app Repositories MailMessageRepository попробуйте AppRepositories MailMessageRepository;
3. или вы должны попробовать composer dump-автозагрузку
4. теперь я получил эту ошибку Исключение ReflectionException Класс App Repositories MailMessageRepository не существует Синтаксическая ошибка предыдущих исключений, неожиданный ‘->’ (T_OBJECT_OPERATOR), ожидающий ‘;’ (0) После изменения на App Repositories MailMessageRepository; и автозагрузка дампа тоже
5. пожалуйста, проверьте свой путь AppRepositoriesMailMessageRepository.php