Класс ReflectionException app Repositories MailMessageRepository не существует

#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