代码之家  ›  专栏  ›  技术社区  ›  ehsan

如何在拉雷维尔建立多对多的关系

  •  1
  • ehsan  · 技术社区  · 7 年前
    // the ticket migration 
    Schema::create('tickets', function (Blueprint $table) {
        $table->increments('id');
        $table->integer('user_id')->unsigned();
        $table->foreign('user_id')->references('id')->on('users')->onDelete('cascade');
        $table->string('title');
        $table->text('body');
        $table->timestamps();
    });
    
    // ticket and status 
    Schema::create('statuses', function (Blueprint $table) {
        $table->increments('id');
        $table->string('name');
        $table->timestamps();
    });
    
    Schema::create('ticket_status', function (Blueprint $table) {    
        $table->integer('ticket_id')->unsigned();
        $table->integer('status_id')->unsigned();
        $table->primary(['ticket_id','status_id']);    
    });
    
    // store method
    public function store()
    {   
        $this->validate(request(), [
            'title' => 'required',
            'body' => 'required |min:5'
        ]);
    
        auth()
            ->user()
            ->tickets()
            ->create(request(['title','body','group','status','priority']));
    
        return redirect('/');
    }
    

    我要移民去买票 status_id ticket_id .

    create 方法在我的控制器中 table status_ticket 不要填充数据。

    我没有错误,但我的表是空的。

    2 回复  |  直到 7 年前
        1
  •  0
  •   Funfare    7 年前

    尝试使用save,而不是create。那么模型应该附在后面

        2
  •  0
  •   Danoctum    7 年前

    你用过这些方法吗 belongsTo() hasMany() 在你的新模型里?

    如果没有,你必须加上这些然后 you can easily save relations .