【问题标题】:Laravel 5 insert data to related tables?Laravel 5 将数据插入相关表?
【发布时间】:2016-09-04 16:02:41
【问题描述】:

如何向相关表中插入数据?我有两个具有一对多关系的相关表,下面是结构:

版本表:

public function up()
    {
        Schema::create('edition', function (Blueprint $table) {
            $table->increments('id');
            $table->string('title')->unique();
            $table->text('cover')->nullable();
            $table->timestamps();
        });

        //Set FK di kolom id_edition di table Journal
        Schema::table('journal', function(Blueprint $table) {
            $table->foreign('id_edition')->references('id')->on('edition')->onDelete('cascade')->onUpdate('cascade');
        });
    }

日志表:

public function up()
    {
        Schema::create('journal', function (Blueprint $table) {
            $table->increments('id');
            $table->string('title', 200);
            $table->string('author');
            $table->text('abstract');
            $table->text('file');
            $table->integer('id_edition')->unsigned();
            $table->timestamps();
        });
    }

版本型号:

class Edition extends Model
{
    protected $table = 'edition';

    protected $fillable = [
        'title',
        'cover',
    ];

    public function journal()
    {
        return $this->hasMany('App\Journal', 'id_edition');
    }
}

期刊模型:

class Journal extends Model
{
    protected $table = 'journal';

    protected $fillable = [
        'title',
        'author',
        'abstract',
        'file',
    ];

    public function edition()
    {
        return $this->belongsTo('App\Edition', 'id_edition');
    }
}

Edition 表应该有很多期刊,就像一张有很多照片的相册。那么,create 和 save 方法会是什么样子呢?我确实尝试过,但收到此错误“约束失败”,以下是代码:

控制器:

 public function create() {
        return view('journal/create');
    }

    public function store(JournalRequest $request, Edition $edition) {
        $input = $request->all();

        //Input PDF
        if ($request->hasFile('file')) {
            $input['file'] = $this->uploadPDF($request);
        }

        //Insert data journal
        $journal = Journal::create($input);

        return redirect('journal');
    }

应该在以下位置打开创建表单的按钮代码:

<div class="tombol-nav">
<a href="../journal/create?edition={{$edition->id}}" class="btn btn-primary">Add new Journal to this edition</a>
</div>

【问题讨论】:

  • 你是如何在store 方法中得到edition_id 的?
  • 不知道怎么回事,上面的方法存储不起作用

标签: laravel laravel-5


【解决方案1】:

假设edition_id 在输入变量中,下面是如何添加属于特定editionjournal

$edition_id = $request->get('edition'); //replace this with your way of retrieving edition_id
$journal = Edition::findOrFail($edition_id)->journal()->create($input);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-01-13
    • 2019-08-06
    • 2016-06-30
    • 1970-01-01
    • 2015-09-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多