【问题标题】:laravel ORM merge two json arrayslaravel ORM合并两个json数组
【发布时间】:2017-08-22 15:14:41
【问题描述】:

请问,我用 laravel ORM 有两个 json 数组,像这样:

php

$personnels = Personnel::all();
$skills = Languagelv::all();
return view('bs_sidebar/recommend',[
            'personnels' => $personnels,
            'skills' => $skills,
]);

型号

class Personnel extends Model
{
    protected $table = 'personnels';

    protected $fillable = ['name', 'sex'];
}

class Personnels_skill extends Model
{
    public $timestamps = false;
    protected $table = 'personnels_skill';
    protected $fillable = ['skill_name','personnels_id'];
}

json 结果

{personnels:[
    {"id" : 1,"name"  : "bruce","sex"   : 1},
    {"id" : 2,"name" : "peter","sex"  : 0}
    ]
};
{skill:[
        {"id" : 1,"skill_name": 'php', "personnels_id" : 1},
        {"id" : 2,"skill_name": 'jsp',"personnels_id" : 1},
        {"id" : 3,"skill_name": 'asp',"personnels_id" : 2}
       ]
};

我想合并两个json数组

(人员 id = 技能人员_id)

技能数组进入人员数组

喜欢这个结果:

{merge:[
        {"id":1,"name":"bruce","sex:1,"skill":[{"id": 1,"skill_name": 'php', "personnels_id" : 1},{"id": 2,"skill_name": 'jsp',"personnels_id" : 1}]},

        {"id":2,"name":"peter","sex":0,"skill":[{"id": 3,"skill_name": 'asp',"personnels_id" : 2}
        ]
};

我该怎么办,请帮帮我,谢谢。

【问题讨论】:

  • 显示你的代码然后我可以帮助你
  • @lakhvirkumar 好的!谢谢~!一直显示php

标签: arrays json laravel merge


【解决方案1】:

如果您在模型中正确配置了关系,您应该能够执行以下操作:

$personnel = Personnel::with('skills')->get();
return view('bs_sidebar/recommend', compact('personnel'));

编辑 给定您的模型,如果您添加以下关系,您将能够使用上面的 Eloquent 查询。

class Personnel extends Model
{
    protected $table = 'personnels';

    protected $fillable = [
        'name', 
        'sex',
    ];

    public function skills() 
    {
        return $this->hasMany(Personnels_skill::class, 'personnel_id', 'id');
    }
}

class Personnels_skill extends Model
{
    protected $table = 'personnels_skill';

    protected $fillable = [
        'personnel_id',
        'skill_name',
    ];

    public $timestamps = false; 

    public function personnel()
    {
        return $this->belongsTo(Personnel::class, 'id', 'personnel_id');
    }
}

【讨论】:

  • 感谢您的回复!但我不知道,如何配置模型..我正在尝试这个
  • @Bruce - 使用您的数据库架构和模型代码更新您的问题。
  • @Bruce - 您的数据库架构与了解您的外键是什么相关。碰巧的是,您已将它们包含在您的模型 $fillable 数组中,所以没关系。
  • 这是很好的做法
【解决方案2】:

让我们试试这个 它会起作用的。

      foreach ($personnels as $key => $value) {
        $skill_list = DB::table('skill')->where('personnels_id','=',$value->id)->get();
        $personnels[$key]->skill = $skill_list;   
                    }  

return view('bs_sidebar/recommend',['personnels' => $personnels]);

【讨论】:

  • 谢谢重播,我试试这个,但在 $personnels[$key]->skill = $skill_list; 中出现错误 [Creating default object from empty value];
  • 对不起!好的,我会试试这段代码,但是得到错误消息 [Creating default object from empty value] 错误在 $personnels[$key]->skill = $skill_list;
  • 我尝试删除「->skill」,错误消失,但没有收到任何消息
  • 请使用第 2 行 $value['id'] 代替 $value->id
  • 能否请您打印 foreach 中的 $value['id'] ,如果它是值来的还是没有
猜你喜欢
  • 1970-01-01
  • 2021-11-21
  • 1970-01-01
  • 2017-02-22
  • 1970-01-01
  • 2019-08-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多