Laravel将外键保存在另一个表中

时间:2017-06-12 13:47:34

标签: php mysql sql laravel

将stream_id保存为垃圾表中的外键的最佳方法是什么? 我已经在表格中创建了表格。

迁移:

public function up()
{
    Schema::table('junk', function(Blueprint $table)
    {
        $table->integer('stream_id')->after('id')->unsigned();
    });
}

控制器功能:

public function create(Request $request)
{
    // create junk, junk shall contain the stream id as a foreign key (save in database)
    $junk = new Junk();

    // stream information data -> the data is saved correctly here
    $data = $request->all();
    $stream = new Stream();
    $stream->fill($data);

    if($stream->save())
    {
        return redirect()->route('stream.new')->with('success', 'saved.');
    }
    else
    {
        return redirect()->route('stream.new')->with('error', 'not saved.')->withInput();
    }
}

我的垃圾模型:

public function junk()
{
    return $this->belongsTo('Stream', 'junk_id');
}

我的流模型

public function stream()
{
    return $this->belongsTo('Junk', 'stream_id');
}

2 个答案:

答案 0 :(得分:1)

你想使用外键约束吗?如果是这样,您可以采用这种方法。以下是具有坐标外键的位置表的示例:

public function up()
{
    Schema::enableForeignKeyConstraints();

    Schema::create('location', function (Blueprint $table) {
        $table->engine = 'InnoDB';
        $table->uuid('id');
        $table->primary('id');   
        $table->uuid('coordinate_id')->nullable();
        $table->string('address')->nullable();
        $table->string('city')->nullable();
        $table->string('state')->nullable();
        $table->string('zipcode')->nullable();
        $table->timestamps();
    });

    Schema::table('location', function(Blueprint $table){
        $table->foreign('coordinate_id')->references('id')->on('coordinate');
    });
}

没有参考坐标表上的位置。

你不应该分配$ data = $ request-> all();你应该使用Validator类来保护自己免受质量分配问题的影响。

看到你的垃圾级别也很高兴。

答案 1 :(得分:0)

如果你有关联模型的功能,你可以这样做:

$junk = new Junk();
$junk->stream()->associate($request->all());

在关系中:

  • 一对多,使用associate()方法
  • 多对多,使用attach()方法

有关Laravel(Eloquent ORM)中关系的更多信息

https://laravel.com/docs/5.4/eloquent-relationships#inserting-and-updating-related-models