2017-10-11 45 views
0

有一个表单,它将详细介绍并将其保存到db中的4个不同表中。项目,活动,捐赠和机会。项目有许多活动,许多捐赠和许多机会。我想在其他表中使用项目ID。但是当我保存表格时,详细信息存储在每个表格中,但该项目未被用于其他3个表格事件,捐赠和机会。它的值是0.如何在所有其他三个表中采用该特定的项目ID(自动递增)。将值插入到laravel中的关系表(引用投影)

我ProjectController是这样的:

class ProjectController extends Controller 
{ 
public function getProject() 
{ 
    return view ('other.project'); 
} 

public function postProject(Request $request) 
{ 
    $this->validate($request, [ 
     'ptitle' => 'required|max:200', 
     'pdescription' => 'required', 
     'etitle' => 'required|max:200', 
     'edetails' => 'required', 
     'dtotal' => 'required', 
     'oposition' => 'required|max:100', 
     'odescription' => 'required', 
    ]); 

    Project::create([ 
     'ptitle' => $request->input('ptitle'), 
     'pdescription' => $request->input('pdescription'), 
     'pduration' => $request->input('pduration'), 
     'psdate' => $request->input('psdate'), 
     'pedate' => $request->input('pedate'), 
     'pcategory' => $request->input('pcategory'), 
     'pimage' => $request->input('pimage'), 
    ]); 

    Event::create([ 
     'pro_id' => $request->input('pid'), 
     'etitle' => $request->input('etitle'), 
     'pdetails' => $request->input('pdetails'), 
     'edate' => $request->input('edate'), 
     'etime' => $request->input('etime'), 
     'elocation' => $request->input('elocation'), 
     'eimage' => $request->input('eimage'), 
    ]); 

    Donation::create([ 
     'pro_id' => $request->input('pid'),   
     'dtotal' => $request->input('dtotal'), 
     'dinhand' => $request->input('dinhand'), 
     'dbankaccount' => $request->input('dbankaccount'), 
    ]); 

    Opportunity::create([ 
     'pro_id' => $request->input('pid'), 
     'oposition' => $request->input('oposition'), 
     'odescription' => $request->input('odescription'), 
     'olocation' => $request->input('olocation'), 
     'odeadline' => $request->input('odeadline'), 
    ]); 

return redirect() 
     ->route('home') 
     ->with('info', 'Your project has been created.'); 
} 

我的项目模型:

class Project extends Model 
{ 
use Notifiable; 

protected $fillable = [ 
    'ptitle', 
    'pdescription', 
    'pduration', 
    'psdate', 
    'pedate', 
    'pcategory', 
    'pimage', 
]; 

public function events() 
{ 
    return $this->hasMany('Ngovol\Models\Event', 'pro_id'); 
} 

public function donations() 
{ 
    return $this->hasMany('Ngovol\Models\Donation', 'pro_id'); 
} 

public function opportunities() 
{ 
    return $this->hasMany('Ngovol\Models\Event', 'pro_id'); 
} 

protected $hidden = [ 

]; 
} 

事件模型:

class Event extends Model 
{ 
use Notifiable; 

protected $table = 'events'; 

protected $fillable = [ 
    'pro_id', 
    'etitle', 
    'edetails', 
    'edate', 
    'etime', 
    'elocation', 
    'eimage', 
]; 

public function projects() 
{ 
    return $this->belongsTo('Ngovol\Models\Project', 'pro_id'); 
} 
} 

捐赠型号:

class Donation extends Model 
{ 
use Notifiable; 

protected $fillable = [ 
    'pro_id', 
    'dtotal', 
    'dinhand', 
    'drequired', 
    'dbankaccount', 
]; 

protected $hidden = [ 

]; 

public function projects() 
{ 
    return $this->belongsTo('Ngovol\Models\Project', 'pro_id'); 
} 
} 

机遇型号:

class Opportunity extends Model 
{ 
use Notifiable; 

protected $fillable = [ 
    'pro_id', 
    'oposition', 
    'odescription', 
    'olocation', 
    'odeadline', 

]; 

protected $hidden = [ 

]; 

public function projects() 
{ 
    return $this->belongsTo('Ngovol\Models\Project', 'pro_id'); 
} 
} 

回答

0

最好试试下面的代码

$project = Project::create($request->only(['ptitle', 'pdescription', 'pduration', 'psdate', 'pedate', 'pcategory', 'pimage'])); 

$project->events()->create($request->only(['etitle', 'pdetails', 'edate', 'etime', 'elocation', 'eimage'])); 

$project->donations()->create($request->only(['dtotal', 'dinhand', 'dbankaccount'])); 

$project->opportunities()->create($request->only(['oposition','odescription','olocation','odeadline'])); 
+0

感谢。但是当我尝试它时遇到错误。 “BadMethodCallException 调用未定义的方法Illuminate \ Database \ Query \ Builder :: event()”出现此错误。对不起,我新来laravel。 –

+0

请参阅更新代码@DebiJeyachandran –

+0

感谢表引用项目ID。但是现在出现了一个新问题。只有捐赠表正在接受价值。事件表插入2行,事件ID&pro_id但其他值为空。机会表为空。未插入行。请帮助我 –