#laravel #eloquent #factory
Вопрос:
Привет, я новичок в создании фабрик на Laravel и создаю веб-сайт блога. В настоящее время пользователи не нужны, так как это черновик, но я пытаюсь создать фабрику для создания фиктивных сообщений в блоге.
У меня есть Post.php файл, который выглядит следующим образом:
namespace App;
use IlluminateDatabaseEloquentModel;
class Post extends Model
{
protected $table = 'posts';
public $primaryKey = 'id';
public $timestamps = true;
}
Мой постфактум выглядит так
use AppPost;
use FakerGenerator as Faker;
use IlluminateSupportStr;
$factory->define(AppPost::class, function (Faker $faker) {
return [
'title' => $faker->name,
'body' => $faker->unique()->safeEmail,
];
});
но каждый раз, когда я пытаюсь создать записи, он выдает ошибку «Исключение InvalidArgumentException с сообщением» Не удается найти фабрику для [приложения/сообщения]».
я знаю, что речь идет о связывании этих файлов, но я не могу понять, как это сделать.
Комментарии:
1. Файл для вашей почтовой модели должен называться
Post.php
и неposts.php
называться . Кроме того, все те свойства, которые вы объявили в своей модели, являются ненужными и автоматически объявляются Laravel.
Ответ №1:
Во-первых, как упоминалось выше, ваш файл должен быть назван Post.php и не posts.php.
Поскольку вы используете AppPost в начале своего файла, вы можете просто позвонить Post::class
$factory->define(Post::class, function (Faker $faker)
Другим вариантом также может быть отсутствие папки factories в карте классов composer:
"autoload": {
"psr-4": {
"App\": "app/"
},
"classmap": [
"database/seeds",
"database/factories"
]
},
Если это не решит проблему, то вам, возможно, потребуется опубликовать свой код там, где вы звоните на свой завод
@редактировать
Комментарии:
1. Извините, где должна называться фабрика, в controller.php и т. д
2. или в вашей сеялке, где вам нужны какие-то фиктивные данные, но работает ли это с изменениями сейчас?
3. изменение поста на сообщения действительно работает, однако в моей общей системе оно не запускается из-за того, что я создаю с помощью поста, так как во всей системе в любом случае можно справиться с этим без изменения системы, почему это работает для сообщений, а не для сообщений
4. Это связано с автоматическим определением имен файлов laravels. Если следовать правильно, Laravel способен самостоятельно идентифицировать все отношения такого рода. Например, он также обнаружит таблицу базы данных без необходимости указывать
$table
атрибут. Я бы просто переименовал ваш файл в Post.php этого должно быть достаточно. @cliff123455. Извините, что я не понимаю, сообщение класса используется во всей системе, но имя таблиц-сообщения. почему фабрика не работает, связано ли это с тем, что таблица называется » сообщения