laravel - 在提交表单后将id从一个表插入另一个表

时间:2017-12-06 09:26:09

标签: php mysql forms laravel

由于我是Laravel的新手(2周前开始使用此框架),因此我很难在提交表单后立即将一个ID从一个表插入到另一个表中。

方案是我有一个表单,我想要的是第一个表(包表)中新提交的数据的id (p_id)插入第二个表(行程表)。以下是我的控制器和我的模型的代码:

控制器

public function store(Request $request){
    request()->validate([
        'packageName' => 'required',
        'adultPrice' => 'required',
        'childPrice' => 'required',
        'infantPrice' => 'required',
        'excessPrice' => 'required',
        'type' => 'required',
        'inclusions' => 'required',
        'additionalInfo' => 'required',
        'reminders' => 'required',
        'photo' => 'required',
        'tags' => 'required',
        'noOfDays' => 'required',
        'day' => 'required',
        'time' => 'required',
        'destination' => 'required'
    ]);
    Packages::create($request->all());
    Itinerary::create($request->all());
    return redirect()->route('Agent.Packages');
}

行程模型

class Itinerary extends Model{
   public $fillable = [
       'noOfDays',
       'day',
       'time',
       'destination',
       ];
}

2 个答案:

答案 0 :(得分:6)

create方法返回已保存的模型实例。

lastSignInTime

之后,您可以根据需要使用它来填充$package = Packages::create($request->all()); 表。

Itinerary

由于您是Laravel的新手,我建议使用$itinerary = new Itinerary(); $itinerary->package_id = $package->id; // Populate other fields $itinerary->save(); 方法填充它。在我看来,它更清楚地告诉您在代码中想要做什么。

答案 1 :(得分:0)

要将数据从第一个表插入第二个表, 首先,您需要获取最后一个Insert Id。

按如下方式更改您的代码:

$package = Packages::create($request->all());
$p_id = $package->id;    // You will get your Id.
// Later you need to add it to below method.
$data = array_merge($p_id,$request->all());   // I`m not sure about this line...
Itinerary::create($data);