在 laravel/livewire 网站上,我使用 faker 段落方法使用消息文本制作工厂:
$faker = \Faker\Factory::create();
return [
'user_id' => $this->faker->randomElement(User::all()->select('id'))['id'],
'message' => 'message text ' . $this->faker->paragraphs(rand(1, 3), true),
'created_at' => $faker->dateTimeBetween('-1 month', '-1 minute'),
];
我在数据库中得到了我需要的数据。 但我需要随机获取段落或一些文本
$faker = \Faker\Factory::create();
return [
'user_id' => $this->faker->randomElement(User::all()->select('id'))['id'],
'message' => 'message text ' . (rand(1, 4) === 1 ? $this->faker->paragraphs(rand(1, 2)) : $this->faker->text(40)),
'created_at' => $faker->dateTimeBetween('-1 month', '-1 minute'),
];
我遇到错误:
Illuminate\Database\QueryException
Array to string conversion (Connection: mysql, SQL: insert into `messages` (`user_id`, `message`, `created_at`, `updated_at`) values (2, ?, 2024-05-01 06:03:39, 2024-05-07 09:18:10))
at vendor/laravel/framework/src/Illuminate/Database/Connection.php:829
825▕ $this->getName(), $query, $this->prepareBindings($bindings), $e
826▕ );
827▕ }
828▕
➜ 829▕ throw new QueryException(
830▕ $this->getName(), $query, $this->prepareBindings($bindings), $e
831▕ );
832▕ }
833▕ }
+17 vendor frames
18 database/seeders/messages.php:16
Illuminate\Database\Eloquent\Factories\Factory::create()
+22 vendor frames
41 artisan:35
Illuminate\Foundation\Console\Ker
哪种有效方法可以修复它?
"laravel/framework": "^10.48.4",
"fakerphp/faker": "^1.23.1",
提前致谢!
根据Faker文档,
paragraphs
方法有第二个参数,默认情况下echo $faker->paragraphs(2);
给出一个段落数组,如果你想要作为文本,你必须传递true
作为第二个参数:
@method array|string paragraphs($nb = 3, $asText = false)
用法如下:
echo $faker->paragraphs(2);
// [
// 'Quasi nihil nisi enim omnis natus eum. Autem sed ea a maxime. Qui eaque doloribus sit et ab repellat. Aspernatur est rem ut.',
// 'Corrupti quibusdam qui et excepturi. Fugiat minima soluta quae sunt. Aperiam adipisci quas minus eius.'
// ]
echo $faker->paragraphs(2, true);
// Quia odit et quia ab. Eos officia dolor aut quia et sed. Quis sint amet aut. Eius enim sint praesentium error quo sed eligendi. Quo id sint et amet dolorem rem maiores.
//
// Fuga atque velit consectetur id fugit eum. Cupiditate aut itaque dolores praesentium. Eius sunt ut ut ipsam.
作为注释,您可以使用
fake
辅助方法,无需手动创建实例:
return [
'user_id' => fake()->randomElement(User::all()->select('id'))['id'],
'message' => 'message text ' . (rand(1, 4) === 1 ? fake()->paragraphs(rand(1, 2), true) : fake()->text(40)),
'created_at' => $faker->dateTimeBetween('-1 month', '-1 minute'),
];