récupérer l'id d'une table pour l'insérer dans l'autre

Par rodrimo, il y a 5 ans


Bonjour chers tous,

Voila je rencontre un petit problème avec mon code.

Ce que je fais

je suis sur un projet test pour mieux apprendre laravel. j'utilise la version 8 de laravel.
en effet mon projet est de créer une application web de gestion de recrutement. je suis sur le module candat qui est en connexion avec 4 tables de ma base:
j'ai les tables

@endsection
j'utilise un model par table
model Candidate
<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;

class Candidate extends Model
{
use SoftDeletes;
protected $table = 'candidates';
public $timestamps = true;

protected $fillable = [
    'civility','name','surname', 'city', 'country',  'user_id',
    'mobile', 'phone', 'quarter', 'email', 'birthdate', 'birthplace', 'child',
    'nationality','postbox', 'permit', 'cnps', 'matrimoniale'
];

/**
* One to Many relation
*
* @return \Illuminate\Database\Eloquent\Relations\BelongsTo
*/
public function user()
{
    return $this->belongsTo(User::class);
}

public function request()
{
    return $this->hasMany(Request::class);
}

public function Languages()
{
    return $this->hasMany(Language::class);
}

public function Experiences()
{
    return $this->hasMany(Experience::class);
}

public function Degrees()
{
    return $this->hasMany(Degree::class);
}

public function Cvtheques()
{
    return $this->hasMany(Cvtheque::class);
}

public function Certifications()
{
    return $this->hasMany(Certification::class);
}

public function Computers()
{
    return $this->hasMany(Computer::class);
}

public function Competences()
{
    return $this->hasMany(Competences::class);
}

public function jobs()
{
    return $this->belongsToMany(Job::class);
}

public function users()
{
    return $this->belongsToMany(User::class);
}

public function requests()
{
    return $this->belongsToMany(Request::class);
}

}

model competence
<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;

class Competence extends Model
{
use SoftDeletes;
protected $fillable = [
'quality','level', 'candidate_id',
];

public function candidate()
{
    return $this->belongsTo(Candidate::class);
}

}

model competence

<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;

class Computer extends Model
{
use SoftDeletes;
protected $fillable = [
'software','level', 'candidate_id',
];

public function candidate()
{
    return $this->belongsTo(Candidate::class);
}

}

model experience

<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;

class Experience extends Model
{
use SoftDeletes;
protected $fillable = [
'company','function','implementation', 'start_date', 'end_date', 'candidate_id',
];

public function candidate()
{
    return $this->belongsTo(Candidate::class);
}

}
j'utilisate les repositories
CandidateRepository
<?php

namespace App\Repositories;

use App\Models\Candidate;

class CandidateRepository {

protected $candidate;
/**
* Create a new CandidateRepository instance.
*
* @param \App\Models\Candidate $candidate
* @return void
*/
public function __construct(Candidate $candidate)
{
    $this->candidate = $candidate;
}

/**
* Get candidates collection.
*
* @return Illuminate\Support\Collection
*/
public function getPaginate($n)
{
    return $this->candidate->paginate($n);
}

/**
* Store a Candidate.
*
* @param array $inputs
* @return void
*/
public function store($inputs)
{
   return $this->candidate->create($inputs);
}

/**
* Update a Candidate.
*
* @param bool $seen
* @param int $id
* @return void
*/
public function update(Candidate $candidate, $inputs)
{
    $candidate->update($inputs);
}

public function destroy(Candidate $candidate)
{
    $candidate->delete();
}   

}
ComputerReposotory
<?php

namespace App\Repositories;

use App\Models\Computer;

class ComputerRepository {

protected $experience;
/**
* Create a new ComputerRepository instance.
*
* @param \App\Models\Computer $computer
* @return void
*/
public function __construct(Computer $computer)
{
    $this->computer = $computer;
}

/**
* Get candidates collection.
*
* @return Illuminate\Support\Collection
*/
public function getPaginate($n)
{
    return $this->computer->paginate($n);
}

/**
* Store a Candidate.
*
* @param array $inputs
* @return void
*/
public function store($inputs)
{
   return $this->computer->create($inputs);
}

/**
* Update a Candidate.
*
* @param bool $seen
* @param int $id
* @return void
*/
public function update(Computer $computer, $inputs)
{
    $computer->update($inputs);
}

public function destroy(Computer $computer)
{
    $computer->delete();
}   

}

CompetenceRepository
<?php

namespace App\Repositories;

use App\Models\Competence;

class CompetenceRepository {

protected $experience;
/**
* Create a new CandidateRepository instance.
*
* @param \App\Models\Candidate $candidate
* @return void
*/
public function __construct(Competence $competence)
{
    $this->competence = $competence;
}

/**
* Get candidates collection.
*
* @return Illuminate\Support\Collection
*/
public function getPaginate($n)
{
    return $this->competence->paginate($n);
}

/**
* Store a Candidate.
*
* @param array $inputs
* @return void
*/
public function store($inputs)
{
   return $this->competence->create($inputs);
}

/**
* Update a Candidate.
*
* @param bool $seen
* @param int $id
* @return void
*/
public function update(Competence $competence, $inputs)
{
    $competence->update($inputs);
}

public function destroy(Competence $competence)
{
    $competence->delete();
}   

}
je fais appel au request
candidateCreateRequest
<?php

namespace App\Http\Requests;

use Illuminate\Foundation\Http\FormRequest;

class CandidateCreateRequest extends FormRequest
{
/**

CompetenceCreateRequest
<?php

namespace App\Http\Requests;

use Illuminate\Foundation\Http\FormRequest;

class CompetenceCreateRequest extends FormRequest
{
/**

namespace App\Http\Requests;

use Illuminate\Foundation\Http\FormRequest;

class ComputerCreateRequest extends FormRequest
{
/**

namespace App\Http\Controllers\Front;

use Illuminate\Http\Request;
use App\Repositories\ExperienceRepository;
use App\Repositories\CompetenceRepository;
use App\Repositories\ComputerRepository;
use App\Http\Requests\ExperienceCreateRequest;
use App\Http\Requests\ExperienceUpdateRequest;
use App\Http\Requests\CompetenceCreateRequest;
use App\Http\Requests\CompetenceUpdateRequest;
use App\Http\Requests\ComputerCreateRequest;
use App\Http\Requests\ComputerUpdateRequest;
use App\Models\Experience;
use App\Models\Competence;
use App\Models\Computer;
use App\Models\Candidate;

class ExperienceController extends Controller
{
/**

Ce que je veux

pour qu'un candidate s'enregistre il doit être au préalable connecté. il peut remplir la table candidates et remplir d'autres tables plutard.
or je souhaite que lors de l'enregistres des tables computers, competences et experiences que mon application à partir de son user id qu'il recupère le candidate_id et insérer dans ce table.

Ce que j'obtiens

quand je valide ma vue: j'ai ce message d'erreur:
Call to undefined function =()
public function store(ExperienceCreateRequest $request, CompetenceCreateRequest $request1, ComputerCreateRequest $request2 )
{

   $candidate = Candidate::where('user_id','=' (Auth::user()->id))->get()->first();

   $inputs = array_merge($request->all(), ['candidate_id' => $request->$candidate]);

je me tourne vers vous pour avoir une solution car je suis bloqué sur ce module depuis trois jours sans succès.
merci d'avance.

1 réponse

droid13, il y a 5 ans

salut alors si cela peut t'aider il faudra essayer de faire de l'i,njection de dependance