【问题标题】:Updating a one to many relationship without the use of implode laravel在不使用 implode laravel 的情况下更新一对多关系
【发布时间】:2017-11-23 04:52:25
【问题描述】:

我正在尝试将我的数据更新到我的数据库中,其中关系是我有很多学校,所以当我尝试保存在我的数据库中时,我想要得到这样的东西: [![在此处输入图片描述][1]][1]

但我只知道如何使用 implode 函数来做到这一点,我只能这样:

我试过这样做,但它不起作用:

public function update1(Request $request, $user_id){
$rows = qualification::where('user_id', $user_id)->get();

    foreach ($rows as $row){
        switch ($row['meta_key']){
            case 'school_name':
                $row['meta_value'] = $request->input('School');
                break;
            case 'start_date':
                $row['meta_value'] = $request->input('SDate');
                break;
            case 'end_date':
                $row['meta_value'] = $request->input('EDate');
                break;
            case 'qualification_list':
                $row['meta_value'] = $request->input('qualification');
                break;
        }
        $row->save();
    }
    return redirect('/home');
}

当我尝试使用该代码时,它会给我这个错误,数组到字符串的转换 PersonalInfo 模型:

class PersonalInfo extends Eloquent
{
     use SoftDeletes;
    protected $table = 'personal_infos';
    protected $primaryKey = 'id';
    protected $dates = ['deleted_at'];
    public function userQualifications()
    {
        return $this->hasMany('App\Qualification','user_id');
    }

资质型号:

class Qualification extends Model
{
    protected $table = "qualifications";

        public function PersonalInfos() {
        return $this->belongsTo('App\PersonalInfo');
    }
}

没有错误信息:

【问题讨论】:

  • 那么在这种情况下,您所有的$request 值都是数组?
  • 是的,我只想让它像第一个屏幕截图一样保存到数据库中,但我不知道如何,过去我做过这样的事情,但现在我没有不知道为什么
  • 你的预期输出是什么,请补充
  • @kunal 输出显示在第二个屏幕截图中,但我想让它像第一个屏幕截图一样保存
  • 能否请您添加帖子数据数组,以便我解决您的问题@Dkna

标签: php laravel one-to-many updates


【解决方案1】:

假设您在用户模型中正确设置了关系,您可以尝试这样的事情(未测试):

public function update1(Request $request, $user_id){

    // get the user
    $user = PersonalInfo::find($user_id);

    // create the new array of meta data
    $data = array();

    // loop through the inputs array count
    for($i=0; $i < count($request->input('School')); $i++) {
        $data[] = [
            'meta_key' => 'school_name',
            'meta_value' => $request->input('School')[$i]
        ];
        $data[] = [
            'meta_key' => 'start_date',
            'meta_value' => $request->input('SDate')[$i]
        ];
        $data[] = [
            'meta_key' => 'end_date',
            'meta_value' => $request->input('EDate')[$i]
        ];
        $data[] = [
            'meta_key' => 'qualification_list',
            'meta_value' => $request->input('qualification')[$i]
        ];
    }

    // create the relationships
    $user->userQualifications()->createMany($data);

    return redirect('/home');
}

【讨论】:

  • 我收到此错误? "Call to undefined method App\PersonalInfo::qualifications()" 这是否意味着我的关系有问题?
  • 您能粘贴到您的 PersonalInfo 模型中吗?
  • 我已经在问题中发布了它们,我认为如果我没有错的话应该是对的
  • 我已经更新了我的答案。使用$user-&gt;userQualifications()-&gt;create($data);
  • 我现在没有收到错误消息,你能告诉我应该在哪里做 dd 以便我可以告诉你问题出在哪里吗?因为每当出现无消息错误时,我都不知道从哪里开始
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-07-18
  • 2013-03-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多