Be part of JetBrains PHPverse 2026 on June 9 – a free online event bringing PHP devs worldwide together.

Flex's avatar
Level 4

how to add one table id to another table as foreign key?

My problem is this I have one form bus data saving to three tables. My Controller store function is like this,

$project = new Project;
$project->detail = $request->input('data');
$project->price = $request->input('price');
$project->telephone = $request->input('telephone');
$project->email = $request->input('email');
$project->name = $request->input('name');

$project->save();

$car = new Car;
    // I need add project_id here
    $car->milage = $request->input('milage');
    $car->transmission = $request->input('tramsmission');
    $car->fuel_type = $request->input('fuel');
    $car->engine_capacity = $request->input('enginecap');
    $car->save();

$upload = new Upload();
           // I need add project_id here
            $upload->filename = $save_name;
            $upload->resized_name = $resize_name;
            $upload->original_name = basename($photo->getClientOriginalName());
            $upload->save();

I need ad project_id as foreign key in Car and Upload table? how can I do this?

0 likes
1 reply
lostdreamer_nl's avatar
Level 53

If you already have the fields in your migrations and DB, then this should work then.

$project = new Project;
$project->detail = $request->input('data');
$project->price = $request->input('price');
$project->telephone = $request->input('telephone');
$project->email = $request->input('email');
$project->name = $request->input('name');

$project->save();

$car = new Car;
$car->project_id = $project->id; // just use $project->id which wil be set by calling 
$car->milage = $request->input('milage');
$car->transmission = $request->input('tramsmission');
$car->fuel_type = $request->input('fuel');
$car->engine_capacity = $request->input('enginecap');
$car->save();

$upload = new Upload();
$upload->project_id = $project->id; // just use $project->id which wil be set by calling save() above.
$upload->filename = $save_name;
$upload->resized_name = $resize_name;
$upload->original_name = basename($photo->getClientOriginalName());
$upload->save();

But if you have set your relations correctly (Project::cars() hasMany Car, Project::uploads hasMany Upload) you could do this:

$project = new Project;
$project->detail = $request->input('data');
$project->price = $request->input('price');
$project->telephone = $request->input('telephone');
$project->email = $request->input('email');
$project->name = $request->input('name');
$project->save();

$project->cars()->create([
    'milage' =>  $request->input('milage'),
    'transmission ' =>  $request->input('transmission '), // fixed a typo here
    'fuel_type ' =>  $request->input('fuel'),
    'engine_capacity ' =>  $request->input('enginecap'),
]);

$project->uploads()->create([
    'filename ' =>  $save_name,
    'resized_name ' =>  $resized_name,
    'original_name ' =>  basename($photo->getClientOriginalName())
]);
1 like

Please or to participate in this conversation.