Я продвигаю большой проект от CodeIgniter до Laravel 5 и сталкиваюсь с проблемой, с которой я не могу найти решение.Laravel Метод привязки модели?
Я знаю, что вы можете использовать привязку модели маршрута, и я использую ее без проблем, и я знаю, что вы можете делать инъекцию метода, например, вводить запрос в метод.
Но моя «проблема», у меня есть несколько классов с тем же именем, но и для различных разделов проекта, например:
App\Models\Knowledgebase\Article
App\Models\News\Article
App\Models\Minisite\Resources\Article
Как вы можете видеть, у меня есть 3 разных Article
моделей. Один для статей базы знаний, один для новостных статей и один для статей статей отдела.
Однако, с привязкой к модели маршрута, кажется, я могу привязать только одну модель к ключевому слову, и поскольку мои URL-адреса имеют ключевое слово Article, это действительно не работает.
Итак, мой вопрос: возможно ли внедрить связанную модель в метод, указав его как параметр? Или мне нужно жестко закодировать его в метод, говоря:
$article = App\Models\Knowledgebase\Article::find($some_id);
Или я могу сделать что-то вроде этого:
public function show(App\Models\Knowledgebase\Article $article)
{
// code
}
На данный момент, если я пытаюсь привнести статью, $article
становится новый экземпляр модели статьи, а не модельный рекорд. Кажется немного странным, что структура заставит вас вручную получить модель для каждого метода.
Любая помощь приветствуется.
Могу ли я использовать этот подход с 'Route :: resource()'? В любом случае это тоже полезно –
@PhilCross Я не использую 'Route :: resource()' много, извините. Может быть? – ceejayoz
Я решил заменить ресурсы маршрута на отдельные маршруты (get/post/put и т. Д.).По крайней мере, таким образом я могу управлять именами псевдонима модели «лучше в файле маршрута». –