php - Laravel 工厂没有返回正确的对象数据

标签 php laravel phpunit factory

我在 Laravel 5.7 中有以下工厂,在调用它时没有返回任何内容:

<?php

use Faker\Generator as Faker;
use Illuminate\Database\Eloquent\Model;

$factory->define(App\Record::class, function (Faker $faker) {
    return [
        "name" => $faker->name,
    ];
});

而我的模型是:
<?php
namespace App;
use App\Product;
use Illuminate\Database\Eloquent\Model;

class Record extends Model
{
    protected $table = "records";

    protected $fillable = ["name"];

    function __construct()
    {
        parent::__construct();
    }
}

我在这里调用工厂:
<?php

namespace Tests\Feature;

use Tests\TestCase;
use Illuminate\Foundation\Testing\WithoutMiddleware;
use Illuminate\Foundation\Testing\DatabaseMigrations;
use Illuminate\Foundation\Testing\DatabaseTransactions;
use Illuminate\Foundation\Testing\RefreshDatabase;

use App;
use App\Product;
use App\Record;
use App\User;

class RecordTest extends TestCase
{
    use RefreshDatabase;
    use WithoutMiddleware;

    /** @test */
    public function when_record_page_for_existing_record_is_accessed_then_a_product_is_displayed()
    {
        //$record = factory(App\Record::class)->make();
        $record = factory(App\Record::class)->create();
       echo "\n\n$record->name\n\n";

    }
}

打印时
$record->name

我什么也没得到,不为空,没有空字符串,什么都没有。似乎是什么问题?如果我将工厂生成的任何内容保存到变量中而不是立即返回它,我可以看到正在填充该名称,但是返回后什么也没有发生,它就消失了

最佳答案

这段代码是有问题的部分:

function __construct()
{
    parent::__construct();
}
您没有将属性传递给父构造函数。 Eloquent 在构造函数中接受模型的属性,但您的覆盖构造函数不接受它们,也不将它们传递给父级。
改成这样:
function __construct(array $attributes = [])
{
    parent::__construct($attributes);
}
顺便说一句,您正在覆盖 Eloquent 的构造函数,但您没有在其中做任何事情。您确定要覆盖它吗?

关于php - Laravel 工厂没有返回正确的对象数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54300810/

相关文章:

php - 没有缓存头的 Laravel 重定向

php - 对更改运行 PHPUnit 测试

python - 用 Python 编写的 Selenium RC 测试可以集成到 PHPUnit 中吗?

php - 日期转换为数据库日期

php - 使用 MySQL 或 PHP 以分钟为单位计算时差量?

php - 在 Laravel 5 中发送大量数组数据时 RouteCollection.php 中的 MethodNotAllowedHttpException 错误

postgresql - 如何在 laravel 5.2 中通过迁移继承 postgresql?

php - 如何在不在开发服务器上运行的情况下设置 PHPUnit 测试框架?

javascript - 我怎样才能在全日历中显示比标题更多的内容

javascript - FPDF - 使用 PDF_JS 时在没有对话框的情况下打印