php - 如何为帖子创建一个工厂,它还在 laravel 中为该帖子的元表输入数据
问题描述
使用工厂是创建种子数据的一种更简洁的方法。我可以从另一种 foreach 或 for 循环方法生成结果。但是工厂怎么做呢?
以下是工厂后页面
<?php
/** @var \Illuminate\Database\Eloquent\Factory $factory */
use App\Post;
use App\MetaData;
use Faker\Factory;
$factory->define(Post::class, function () {
$faker = Faker\Factory::create('en_IN');
$w = $faker->unique()->sentence.' '.mt_rand(0,1000);
$r = [
'title' => $w,
'slug' => strtolower(str_replace(' ', '-', $w)),
'banner' => 'https://source.unsplash.com/random/600x600',
'content' => $faker->text,
'views' => mt_rand(0,1000),
'status' => rand(0,1),
'creator_id' => mt_rand(0,100),
'moderator_id' => mt_rand(0,100),
];
$factory->define(MetaData::class, function () {
return [
'for' => 'article',
'record_id' => $r->id,
'title' => $w,
'slug' => strtolower(str_replace(' ', '-', $w)),
'description' => $faker->sentences,
'banner' => 'https://source.unsplash.com/random/600x600',
'keywords' => $faker->words,
'status' => 1,
'creator_id' => mt_rand(0,100),
'moderator_id' => mt_rand(0,100),
];
});
return $r;
});
我想做这样的事情,但最终出现如下错误:
ErrorException : Undefined variable: factory
at /Users/dragonar/Dev/pdp/database/factories/PostFactory.php:23
19| 'creator_id' => mt_rand(0,100),
20| 'moderator_id' => mt_rand(0,100),
21| ];
22|
> 23| $factory->define(MetaData::class, function () {
24| return [
25| 'for' => 'article',
26| 'record_id' => $r->id,
27| 'title' => $w,
Exception trace:
1 Illuminate\Foundation\Bootstrap\HandleExceptions::handleError("Undefined variable: factory", "/Users/dragonar/Dev/pdp/database/factories/PostFactory.php", [Object(Faker\Generator), "Aut voluptatum sed aut beatae. 380"])
/Users/dragonar/Dev/pdp/database/factories/PostFactory.php:23
2 Illuminate\Database\Eloquent\Factory::{closure}(Object(Faker\Generator), [])
/Users/dragonar/Dev/pdp/vendor/laravel/framework/src/Illuminate/Database/Eloquent/FactoryBuilder.php:273
Please use the argument -v to see more details.
如果这解决了,我还想在同一个帖子中添加类别和标签。
解决方案
请试试这个
$factory->define('App\MetaData', function($faker) use ($factory) {
// Your stuff here
});
推荐阅读
- c# - 如何将字符串更新为 StringBuilder?
- python - 将列表转换为字符串以读取最大值
- javascript - javascript append 后使用 chrome webdriver 找不到新元素
- javascript - 脚本的动态加载显示相同 JS 文件的不同行为
- ms-access - 访问 OR 语句无法正常工作
- elasticsearch - 我在java中使用elasticsearch并希望将下面转换为java代码。我在聚合和术语语法方面遇到困难
- python - Airflow DAG 任务未运行,因为它卡在“无”状态
- python - 有没有办法从python中另一个数字上方的列表中的每个数字中减去一个数字?
- c++ - 通过 UNIX shell 命令“>”将进程的输出通过管道传输到文件
- xml - xml 到richtextbox,在 RTB 中进行一些格式化,也许更改数据,然后将 RTB 文本保存回 xml