2017-10-11 2 views
0

Il existe une forme unique qui prend en détails et l'enregistre dans 4 tables différentes dans db. Projet, événements, dons et opportunités. Le projet a de nombreux événements, de nombreux dons et de nombreuses opportunités. Je souhaite également utiliser l'ID du projet dans d'autres tables. mais quand j'enregistre le formulaire les détails sont stockés dans chaque 4 tables mais le projet n'a pas été pris pour les 3 autres tables Événements, Don et Opportunité. Sa valeur est 0. Comment prendre cet identifiant de projet particulier (auto-incrémentation) dans les trois autres tables.Insertion de valeurs dans un formulaire avec relation dans laravel (Projecteur référant)

Mon ProjectController est comme ceci:

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.'); 
} 

Mon projet Modèle:

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 = [ 

]; 
} 

Modèle événement:

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'); 
} 
} 

Don Modèle:

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'); 
} 
} 

occasion Modèle:

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'); 
} 
} 

Répondre

0

mieux essayer le code suivant

$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

Merci. Mais j'ai eu une erreur quand je l'ai essayé. "BadMethodCallException Appel à la méthode indéfinie Illuminate \ Database \ Query \ Builder :: event()" Cette erreur. Désolé im nouveau à laravel. –

+0

S'il vous plaît se référer au code mis à jour @DebiJeyachandran –

+0

Merci la table se réfère à l'ID du projet. Mais un nouveau problème est survenu maintenant. Seule la table des dons prend des valeurs. La table d'événements insère 2 lignes avec l'ID d'événement & pro_id, mais les autres valeurs sont null. Et la table d'opportunité est null. Aucune ligne n'est insérée. S'il vous plaît aidez-moi –