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

amrcodes's avatar

Inserting data to two tables [one to many]

Hello, I'm new to laravel and I'm struggling with a problem for almost 3 days,

I have two tables first table = customer_info [primary key] main table second table = room_info [foreign key]

when I insert new data to the table room_info using the foreign key a new row is created inside of the customer_info with a new id but nothing happens inside of the 2nd table room_info because I don't know how to use foreign key inside of my controller room_info table

I'm not using migrations I use PHPMyAdmin here is my code:

Controller for the rooms table=

<?php

namespace App\Http\Controllers;
use \Debugbar;
use Illuminate\Http\Request;
use App\Models\Room;
use App\Models\Customer;

class GuestRoomController extends Controller
{
    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index()
    {
        $cat = Customer::all();
        return view('guest')->with('cat', $cat);
        
    }

    /**
     * Show the form for creating a new resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function create()
    {
        //
    }

    /**
     * Store a newly created resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Http\Response
     */
    public function store(Request $request)
{
        $room = new Room;
        $room->room_nums = $request->room_num;
        $room->room_type = $request->room_type;
        $room->adults = $request->adults;
        $room->child = $request->child;
        $room->user_id = 44;
        // dd($room->id);
        $room->save();
        return redirect('/guest');

        
        
    }

    /**
     * Display the specified resource.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function show($id)
    {
        //
    }

    /**
     * Show the form for editing the specified resource.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function edit($id)
    {
        //
    }

    /**
     * Update the specified resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function update(Request $request, $id)
    {
        //
    }

    /**
     * Remove the specified resource from storage.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function destroy($id)
    {
        //
    }
}
controller for the customer_info
<?php

namespace App\Http\Controllers;
use App\Models\Guest;
use App\Models\Customer;
use App\Models\Info;

use Illuminate\Http\Request;

class GuestController extends Controller
{
    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index()
    {
        // $guest = Guest::all();
        // return view('guest')->with('guest', $guest);
        // dd($guest);
    }

    /**
     * Show the form for creating a new resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function create()
    {
        //
    }

    /**
     * Store a newly created resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Http\Response
     */
    public function store(Request $request)
    {
        $guest = new Customer;
        $guest->guest_name = $request->name;
        $guest->nationality = $request->nationality;
        $guest->email = $request->email;
        $guest->mobile_num = $request->mobile;
        // $guest->id = $request->id;

        // $guest->nationality = $request->nationality;
        // $guest->nationality = $request->nationality;
        $guest->save();
        return redirect('/res');
    }

    /**
     * Display the specified resource.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function show($id)
    {
        //
    }

    /**
     * Show the form for editing the specified resource.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function edit($id)
    {
        //
    }

    /**
     * Update the specified resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function update(Request $request, $id)
    {
        //
    }

    /**
     * Remove the specified resource from storage.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function destroy($id)
    {
        //
    }
}
room model
<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;

class Room extends Model
{
    use HasFactory;
    public $timestamps = false;
    protected $table = 'booking_guest_room';
    protected $fillable = ['user_id', 'id'];
    public function rooms(){
        return $this->belongsTo(Customer::class);
    }

}
customer model
<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;

class Customer extends Model
{
    use HasFactory;
    protected $table="customer_info";
    public function customers(){
        return $this->hasMany(Room::class);
    }
}
route file
<?php

use App\Http\Controllers\InfoController;
use App\Http\Controllers\GuestController;
use App\Http\Controllers\GuestRoomController;
use Illuminate\Support\Facades\Route;
// use App\Http\Controllers\PackageController;
/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| contains the "web" middleware group. Now create something great!
|
*/


Route::get('sections', function(){
    return view('sections');
});
Route::get('res', function(){
    return view('res');
});

Route::get('guest', function(){
    return view('guest');
});


Route::resource('guest', GuestController::class);
0 likes
1 reply

Please or to participate in this conversation.