如何将 table 的一个字段插入 laravel 5 中的另一个 table?

How to insert one field of a table to another table in laravel 5?

我想为东西创建图片库。所以在 Mysql 我创建了两个 tables:

例如:如果我上传一个包含 4 张图片的新内容 stuff_id =1 in table multiples 应该看起来像这样::

|id||stuff_id||images|
|1|   |1|   |image1.jpg|
|2|   |1|   |image2.jpg|
|3|   |1|   |image3.jpg|
|4|   |1|   |image4.jpg|

这是我的代码,但它不符合我的要求(我有 2 个模型 Stuffs 和 Multiple)。它只是将记录插入 tables 但是,在 table 倍数 stuff_id 中它得到 '0' 4次。

public function upload_multiple(Request $request){

    $stuff = new Stuffs();
    $stuff->name = $request->input('name');
    $stuff->detail = $request->input('detail');
    $stuff->save();

    $files = $request->file('images');
    foreach ($files as $file){
    $multiple = new Multiple(); //Multiple is a 'Model' not a table name
    $destinationPath = 'uploads/';
    $filename = $file->getClientOriginalName(); 
    $upload_success = $file->move($destinationPath, $filename);
    $multiple->images =$destinationPath.$filename;
    $multiple->save();
} 

那么我如何在 Laravel 5 中执行此操作? 非常感谢您的帮助!

您需要的是 One to Many relationship。设置方法如下:

在您的模型 类 中,添加以下内容:

class Stuffs {
    ...
    // A Stuff has many Mutliples
    public function multiples() {
        return $this->hasMany('App\Multiple');
    }

}

class Multiple {
    ...
    // A Multiple belongs to only one Stuff
    public function stuff() {
        return $this->belongsTo('App\Stuffs');
    }
}

然后,在添加 Stuff 时,您只需 attach Multiples to it:

public function upload_multiple(Request $request) {
    $stuff = new Stuffs();
    $stuff->name = $request->input('name');
    $stuff->detail = $request->input('detail');
    $stuff->save();

    $files = $request->file('images');

    $multiples = [];

    foreach ($files as $file) {
        $multiple = new Multiple(); //Multiple is a 'Model' not a table name
        ...

        $multiples[] = $multiple;
    }

    $stuff->multiples()->saveMany($multiples);
}