Cakephp 3.0:hasMany show key->;值而不是数组

Cakephp 3.0:hasMany show key->;值而不是数组,cakephp,cakephp-3.0,Cakephp,Cakephp 3.0,我使用的是CakePHP3.0,我有一个“用户”表和一个“配置文件”表。 users表包含最少的信息、用户名、电子邮件和密码。 配置文件包含详细信息:头像、电话号码 我能够通过hasMany关联将这两个表链接在一起。如果我查看一个用户的输出,它会将“profiles”属性显示为一个数组,每个概要信息都有一个项目: User (array) id 1 username admin email admin@test.com password **

我使用的是CakePHP3.0,我有一个“用户”表和一个“配置文件”表。 users表包含最少的信息、用户名、电子邮件和密码。 配置文件包含详细信息:头像、电话号码

我能够通过hasMany关联将这两个表链接在一起。如果我查看一个用户的输出,它会将“profiles”属性显示为一个数组,每个概要信息都有一个项目:

User (array)
   id    1
   username    admin
   email       admin@test.com
   password    ****
   -> created  (array)
   -> modified (array)
   -> profiles (array)
         -> 0  (array)
              id         1
              user_id    1
              key        avatar
              value      1.jpg
         -> 1  (array)
              id         2
              user_id    1
              key        phone
              value      555-1234
不,要得到阿凡达仍然很难。我将不得不通过所有的个人资料项目,看看有关键的'阿凡达'。 我要寻找的是能够提供这种结构的东西:

User (array)
   id    1
   username    admin
   email       admin@test.com
   password    ****
   -> created  (array)
   -> modified (array)
   -> profiles (array)
         avatar       1.jpg
         phone        555-1234
这会容易得多。现在我只需要点击用户->个人资料->头像


这可能吗?

您可以使用来操作返回的数组:-

$data['profiles'] = Cake\Utility\Hash::combine(
    $data['profiles'], 
    '{n}.key', 
    '{n}.value'
);

你真的需要一个有很多关系的
吗?肯定一个
有一个
关系更合适吗?这是怎么回事?用户可以有多个配置文件项。像一个化身或一部手机或。。。我不想创建一个包含列“avatar”和列“phone”的表……抱歉,误读了您的数据结构。更标准的是,有一个包含所有字段“avatar”、“phone”、“昵称”
…的hasOne关联的“profiles”表。而不是每个可能的选项都有一行。用你现在的方式做这件事似乎有点过头了,这也让你的数据集变得更加混乱。是吗?因为它不太灵活。比如说,我的整个网站已经启动并投入生产。我觉得有必要在个人资料中添加一个昵称。我不仅需要更新表结构,还需要更新实体和表文件。