首页 > 解决方案 > Laravel 5.8 依赖注入 - 如何将模型注入服务

问题描述

我有BooksService类,应该由Book 模型对象注入。然后我想将 BooksService 注入BookController。但我不知道该怎么做。

我收到一个错误 Class App\Model\BookService 不存在。是否需要在某处注册?我也不确定我是否做得对。是在这段代码中吗?

图书服务

namespace App\Model;

class BookService
{
    /** @var  Book */
    public $books;


    // I am not sure if this is ok
    public function construct(Book $books)
    {
        $this->books = $books;
    }


    public function test()
    {
        dd($this->books);
    }

}

图书控制器

namespace App\Http\Controllers;

use App\Http\Requests\StoreBook;
use App\Model\Book;
use App\Model\BookService;
use Illuminate\Http\Request;


class BookController extends Controller
{

    ....    

    // This throws me an error BookService does not exists
    public function create(BookService $bookService)  
    {
        $bookService->test();
        return view('book.create');
    }

    ....
}

标签: laravel-5dependency-injection

解决方案


所以问题是 __contruct() 方法需要 Book 门面实例,但 Laravel 不知道它是什么。Book 外观也可以从服务类内部获得,因此无需注入它。


推荐阅读