首页 > 解决方案 > Laravel:一对多多边形关系不会自动更新

问题描述

3 种类型的帖子:个人、商业和自然。

下面是帖子模型

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\Relation;

Relation::morphMap([
          'Personal' => 'App\Personal',
          'Business' => 'App\Business',
          'Nature' => 'App\Nature',
        ]);

class Post extends Model
{
    public function postable()
    {
        return $this->morphTo();
    }        
}

下面是个人模型

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;    

class Personal extends Model
{
    public function posts()
    {
        return $this->morphMany(Post::class,'postable');
    }
}

商业与自然模型也是如此。

当我在 phpMyAdmin 中手动输入数据时,修补程序会根据需要显示结果,但是当我从前端(通过表单)创建帖子时,posts表格保持不变。

我试过谷歌搜索,但没有任何效果!:(

下面是个人控制器

public function create()
    {
        if(Auth::guest()){
            return redirect()->route('login');
        }
        $sectors = Sector::all();
        $cities = City::all();
        $ranges = Range::all();
        return view('front.personal-register',compact('sectors','cities','ranges'));
    }

public function store(Request $request)
    {
        $this->validate($request,[
            "sectors" => "required",
            "cities" => "required",
            "ranges" => "required",
            "g-recaptcha-response" => "required|captcha"
        ]);

    $franchisee = new Personal;
    $franchisee->user_id = Auth::user()->id;
    $franchisee->save();

    $franchisee->sectors()->sync($request->sectors);
    $franchisee->cities()->sync($request->cities);
    $franchisee->ranges()->sync($request->ranges);

    return redirect(route('personal.index'))->with('message','Thank You! Your post has been added');
}

标签: laravellaravel-5ormrelationship

解决方案


推荐阅读