【发布时间】:2021-09-03 01:08:05
【问题描述】:
按照 laravel-news.com 上的 Your First Laravel application 教程,我需要编辑由 $ php artisan make:model --factory Link 创建的 LinkFactory.php。
make创建的默认代码如下:
<?php
namespace Database\Factories;
use App\Models\Link;
use Illuminate\Database\Eloquent\Factories\Factory;
class LinkFactory extends Factory
{
/**
* The name of the factory's corresponding model.
*
* @var string
*/
protected $model = Link::class;
/**
* Define the model's default state.
*
* @return array
*/
public function definition()
{
return [
//
];
}
}
教程建议用以下代码替换该代码:
<?php
/** @var \Illuminate\Database\Eloquent\Factory $factory */
use App\Link;
use Faker\Generator as Faker;
$factory->define(Link::class, function (Faker $faker) {
return [
'title' => substr($faker->sentence(2), 0, -1),
'url' => $faker->url,
'description' => $faker->paragraph,
];
});
我了解一些命名空间差异,即。 App\Link -> App\Models\Link 和 \Illuminate\Database\Eloquent\Factory -> Illuminate\Database\Eloquent\Factories\Factory 以及需要添加 Faker\Generator as Faker,但我不确定如何处理其余部分。
我的想法如下:
<?php
namespace Database\Factories;
use App\Models\Link;
use Illuminate\Database\Eloquent\Factories\Factory;
use Faker\Generator as Faker;
class LinkFactory extends Factory
{
/**
* The name of the factory's corresponding model.
*
* @var string
*/
protected $model = Link::class;
/**
* Define the model's default state.
*
* @return array
*/
public function definition()
{
$faker = new Faker;
return [
'title' => substr($faker->sentence(2), 0, -1),
'url' => $faker->url,
'description' => $faker->paragraph,
];
}
}
首先,我需要知道这是否正确,以及为什么不正确。
其次,我不知道我是否需要在这里的任何地方使用$model 属性。
第三,这对代码中其他地方的进一步使用有何影响?
【问题讨论】: