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

mohammadkhallaf's avatar

Attempt to read property "id" on null

<?php

namespace App\Http\Controllers;

use App\Models\Finance;

use App\Models\Transaction;
use Illuminate\Http\Request;

class TransactionController extends Controller
{
    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index()
    {
        $transactions = Transaction::all();
        return view('admin.transaction.index', compact('transactions'));
    }

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

    /**
     * Store a newly created resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Http\Response
     */
    public function store(Request $request)
    {
        $this->validate($request, [
            'finance_id' => "required|exists:finances,id",
            'payment' => "required|integer",
            'date' => "required|date",

        ]);
        $transactions = Transaction::create([
            'finance_id' => Finance::where('id', $request->id)->first()->id,
            'payment' => $request->payment,
            'date' => $request->date,
            'note' => $request->note
        ]);
        return redirect()->back()->with('success', 'تم اضافة دفعة جديدة بنجاح');
    }

    public function show(Transaction $financeTransition)
    {
        //
    }


    public function edit(Transaction $financeTransition)
    {
        //
    }

    /**
     * Update the specified resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \App\Models\FinanceTransition  $financeTransition
     * @return \Illuminate\Http\Response
     */
    public function update(Request $request, Transaction $financeTransition)
    {
        //
    }

    /**
     * Remove the specified resource from storage.
     *
     * @param  \App\Models\FinanceTransition  $financeTransition
     * @return \Illuminate\Http\Response
     */
    public function destroy(Transaction $financeTransition)
    {
        //
    }
}

0 likes
4 replies
Sinnbeck's avatar
Sinnbeck
Best Answer
Level 102

Most likely here

Finance::where('id', $request->id)->first()->id

If it does not find a record, you get an error. So make sure it gets one (here we throw a 404 error instead)

Finance::findOrFail($request->id)->id
1 like

Please or to participate in this conversation.