首页 > 解决方案 > ReflectionException 类 app\Repositories\MailMessageRepository 不存在

问题描述

我无法访问存储库,无法调用函数。我正在尝试在我的 MailMessages 数据表上集成一个软删除按钮,但我无法使用存储库,我收到以下消息:

ReflectionException 类 app\Repositories\MailMessageRepository 不存在

我的邮件消息控制器

    <?php

namespace App\Http\Controllers;

use App\DataTables\MailMessageDataTable;
use App\Http\Requests\MailMessageRequest;
use app\Repositories\MailMessageRepository;
use App\MailMessage;
use Illuminate\Http\Request;
use DataTables;
use PulkitJalan\Google\Facades\Google;

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 \Illuminate\Http\Response
     */
    public function index(MailMessageDataTable $MailMessageDataTable)
    {
        return $MailMessageDataTable->render('mailmessage.index');
    }
    /**
     * Show the form for creating a new resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function create()
    {
     //   $MailMessage = $this->MailMessageRepository;
        return view('mailmessage.create');
    }

    /**
     * Store a newly created resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Http\Response
     */
    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  \App\MailMessage  $mailMessage
     * @return \Illuminate\Http\Response
     */
    public function show($id)
    {
        $MailMessage = MailMessage::find($id);
        return view('MailMessage.show', ['MailMessage' => $MailMessage]);
    }

    /**
     * Show the form for editing the specified resource.
     *
     * @param  \App\MailMessage  $mailMessage
     * @return \Illuminate\Http\Response
     */
    public function edit($id)
    {
        $MailMessage = MailMessage::find($id);
        return view('MailMessage.edit', ['MailMessage' => $MailMessage]);
    }

    /**
     * Update the specified resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \App\MailMessage  $mailMessage
     * @return \Illuminate\Http\Response
     */
    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  \App\MailMessage  $mailMessage
     * @return \Illuminate\Http\Response
     */
    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 App\Repositories;

use App\User;
use App\MailMessage;
use App\Enums\MailMessageType;
use Illuminate\Support\Facades\Auth;

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) {

    }


}

标签: laraveldatatablerepository

解决方案


也许出了点问题,你声明了 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


推荐阅读