在Cakephp 3.x中添加具有关联的灯具

时间:2015-09-24 20:51:57

标签: php cakephp cakephp-3.0

在我做了一些研究后,我没有找到任何正确的答案。

我开始为我的CakePHP(3.x)应用程序编写测试,我想知道如何添加灯具及其关联?换句话说,我们如何将夹具链接到另一个夹具而无需直接在夹具内部写入主键和外键。

我有一个Users表和一个UserProfiles表。 用户通过user_id列获取了一个UserProfile。这是我的用户夹具。

namespace App\Test\Fixture;

use Cake\TestSuite\Fixture\TestFixture;

class UsersFixture extends TestFixture
{

    public $import = ['table' => 'users'];
    public $records = [

        [
            'username' => 'mark@mail.com',
            'primary_role' => 1
            'is_active' => 1,
        ]
    ];

}

这是我的UserProfile灯具

namespace App\Test\Fixture;

use Cake\TestSuite\Fixture\TestFixture;

class UserProfilesFixture extends TestFixture
{

    public $import = ['table' => 'user_profiles'];
    public $records = [

        [
            'first_name' => 'Mark',
            'last_name' => 'Yellowknife',
        ]
    ];

}

如何将两个记录链接在一起? Aka,如何告诉用户配置文件记录添加其user_id以链接到用户记录?

无需手动编写密钥即可使用Fixtures执行此操作。

谢谢你们!

1 个答案:

答案 0 :(得分:1)

你必须在灯具中定义它。唯一的另一种方法是在运行时发出更新查询以设置外键,但这不是一个好主意。

除此之外,没有真正的方法可以做到这一点,我的意思是,如果没有明确定义哪些记录需要知道哪些记录需要相互关联?

因此,您必须至少定义外键,并且根据主键的生成方式(自动递增整数,UUID等),您可能还必须定义它们。