如何将 table 的一个字段插入 laravel 5 中的另一个 table?
How to insert one field of a table to another table in laravel 5?
我想为东西创建图片库。所以在 Mysql 我创建了两个 tables:
table 1 multiples 包含字段名称 (id, stuff_id, images ) 其中 id是主键和自增,stuff_id是index.
table 2 stuffs 包含字段名称 (stuff_id, name, detail) 其中 stuff_id是主键和自动递增。我只想上传一个有4张图片的新东西,并且能够在 table 倍数 .
中得到 stuff_id
例如:如果我上传一个包含 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);
}
我想为东西创建图片库。所以在 Mysql 我创建了两个 tables:
table 1 multiples 包含字段名称 (id, stuff_id, images ) 其中 id是主键和自增,stuff_id是index.
table 2 stuffs 包含字段名称 (stuff_id, name, detail) 其中 stuff_id是主键和自动递增。我只想上传一个有4张图片的新东西,并且能够在 table 倍数 .
中得到 stuff_id
例如:如果我上传一个包含 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);
}