Php Laravel控制器:为此目的,排列代码块的最佳方法是什么

Php Laravel控制器:为此目的,排列代码块的最佳方法是什么,php,laravel,oop,controller,Php,Laravel,Oop,Controller,在下面的引文中,我打算实现5件事 从表单接收输入 检查用户是否有足够的余额,因此使用if语句 将事务记录插入数据库 更新发票表中的状态 更新状态车辆表 公共功能存储1(请求$Request,$invoice\u id) { 我得到“未定义变量:事务\u id” 当我尝试使用invoice_id时,它会运行,但只更新invoice表,不更新车辆 如果有人能告诉我如何重新排列代码以实现我的目标,我正在等待。如果你也能告诉我为什么我的车辆表没有更新,那就好了。尝试以下方法: 1.检查IF语句的条件并删

在下面的引文中,我打算实现5件事

  • 从表单接收输入
  • 检查用户是否有足够的余额,因此使用if语句
  • 将事务记录插入数据库
  • 更新发票表中的状态
  • 更新状态车辆表

    公共功能存储1(请求$Request,$invoice\u id) {

    我得到“未定义变量:事务\u id” 当我尝试使用invoice_id时,它会运行,但只更新invoice表,不更新车辆

    如果有人能告诉我如何重新排列代码以实现我的目标,我正在等待。如果你也能告诉我为什么我的车辆表没有更新,那就好了。

    尝试以下方法: 1.检查IF语句的条件并删除else语句, 2.您实际上是在尝试获取具有发票id的车辆的价值。如果您希望基于发票id获取车辆,并且存在发票id列,则您将使用where()

    public function store1(Request $request, $invoice_id) {
    
             $invoice = Invoice::find($invoice_id);
    
             if (Auth::user()->amount < $request->paid_amount){
                Flash::error('insufficient Balance');
                return redirect(route('transactions.index'));     
             }
    
             $transaction = new Transaction();
             $transaction->added_on = Carbon\Carbon::now();
             $transaction->pay_ref = mt_rand(10000, 99999);
             $transaction->invoice_id = $request->invoice_id;
             $transaction->paid_amount = $request->paid_amount;
             $transaction->paid_method = 'Wallet';
             $transaction->status = 1;
             $transaction->invoice()->associate($invoice);
             $transaction->save();
    
    
             $user = User::findOrFail(Auth::id());
    
    
              $user->amount = Auth::user()->amount - $transaction->paid_amount;
              $user->update();
              $invoice = Invoice::findOrFail($invoice_id);
              $invoice->status = 1;
              $invoice->update();
    
             //$vehicle = Vehicle::findOrFail($invoice_id);
             //$vehicle->status = 2;
             //$vehicle->update();
             //You are actually trying to get the value of vehicle with invoice_id if you want 
             //to get vehicle based on invoice id the it will be:
    
             $vehicle = Vehicle::where('invoice_id',$invoice_id)->first();
             $vehicle->status = 2;
             $vehicle->update();
    
    
             Flash::success('Transaction done successfully.');
             return redirect(route('transactions.index'));   
        }
    
        }
    
    public function store1(请求$Request,$invoice\u id){
    $invoice=发票::查找($invoice\u id);
    如果(Auth::user()->金额<$request->已付金额){
    闪存::错误(“余额不足”);
    返回重定向(路由('transactions.index');
    }
    $transaction=新事务();
    $transaction->added_on=Carbon\Carbon::now();
    $transaction->pay\u ref=mt\u rand(1000099999);
    $transaction->invoice\u id=$request->invoice\u id;
    $transaction->paid\u amount=$request->paid\u amount;
    $transaction->paid_method='Wallet';
    $transaction->status=1;
    $transaction->invoice()->关联($invoice);
    $transaction->save();
    $user=user::findOrFail(Auth::id());
    $user->amount=Auth::user()->amount-$transaction->已付金额;
    $user->update();
    $invoice=发票::findOrFail($invoice\u id);
    $invoice->status=1;
    $invoice->update();
    //$vehicle=vehicle::findOrFail($invoice\u id);
    //$vehicle->status=2;
    //$vehicle->update();
    //如果需要,您实际上是在尝试获取具有发票id的车辆的价值
    //要根据发票id获取车辆,将:
    $vehicle=vehicle::其中('invoice_id',$invoice_id)->first();
    $vehicle->status=2;
    $vehicle->update();
    Flash::success('事务成功完成');
    返回重定向(路由('transactions.index');
    }
    }
    
    在我看来,您试图通过$invoice\u id查找车辆。您不应该改用$invoice\u id吗?像这样的<代码>$vehicle=vehicle::findOrFail($vehicle\u id)或者如果您希望通过$transaction\u id查找车辆,您的查询应该更像这样:
    vehicle::where('transaction\u id',$transaction\u id)->first()假设您已经定义了车辆和交易之间的关系,我认为我的交易控制器有问题。甚至索引上的“编辑”按钮也给我提供了事务id的未定义变量的错误。也许我必须在您的解决方案开始工作之前解决这个问题。谢谢你的贡献。多罗,非常感谢你。余额检查正在进行中。但我在想,如果有一种方法可以在插入交易之前进行余额检查,因为即使在打印余额不足的情况下,交易也会被添加,并且用户不会被记入借方,
    
       $vehicle = Vehicle::findOrFail($transaction_id);
                 $vehicle->status = 2;
                 $vehicle->update();
    
    public function store1(Request $request, $invoice_id) {
    
             $invoice = Invoice::find($invoice_id);
    
             if (Auth::user()->amount < $request->paid_amount){
                Flash::error('insufficient Balance');
                return redirect(route('transactions.index'));     
             }
    
             $transaction = new Transaction();
             $transaction->added_on = Carbon\Carbon::now();
             $transaction->pay_ref = mt_rand(10000, 99999);
             $transaction->invoice_id = $request->invoice_id;
             $transaction->paid_amount = $request->paid_amount;
             $transaction->paid_method = 'Wallet';
             $transaction->status = 1;
             $transaction->invoice()->associate($invoice);
             $transaction->save();
    
    
             $user = User::findOrFail(Auth::id());
    
    
              $user->amount = Auth::user()->amount - $transaction->paid_amount;
              $user->update();
              $invoice = Invoice::findOrFail($invoice_id);
              $invoice->status = 1;
              $invoice->update();
    
             //$vehicle = Vehicle::findOrFail($invoice_id);
             //$vehicle->status = 2;
             //$vehicle->update();
             //You are actually trying to get the value of vehicle with invoice_id if you want 
             //to get vehicle based on invoice id the it will be:
    
             $vehicle = Vehicle::where('invoice_id',$invoice_id)->first();
             $vehicle->status = 2;
             $vehicle->update();
    
    
             Flash::success('Transaction done successfully.');
             return redirect(route('transactions.index'));   
        }
    
        }