首页 > 解决方案 > 如何修复错误的方法调用“方法 App\Http\Controllers\TransactionsController::Transfer 不存在。” 在 laravel 中

问题描述

我在创建新的交易帐户时遇到问题,并且收到了 Method App\Http\Controllers\TransactionsController::Transfer 在 TransactionsController 中不存在的错误

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Facades\Validator;
use App\Http\Requests\TransactionsRequest;
use App\Traits\MakeTransactions;
use App\User;
use App\Transaction;
use DB;

class TransactionsController extends Controller
{
    public function create()
    {
        $accno = auth()->user()->accno;

        $account = DB::table('users')
            ->join('accounts', 'users.accno', '=', 'accounts.accno')
            ->select('users.*', 'accounts.*')
            ->get();

        return view('dashboard.user.make_a_transfer.create', compact('account'));
    }

    public function store(TransactionsRequest $requestFields,$id)
    {   
        $transactions = $this->Transfer($requestFields);

        $account = Account::find($id);

        $bal = $account->amt_paid + $transctions->amt;
        $account->total = $bal;
        $account->save(); 

        return redirect('/make_transfer')->with('success', 'Transaction has been made');
    }

    public function saveTransaction($data)
    {   

        return true;

    }
}

但在 Transfer($requestFields) 我指的是 Traits/MakeTransactions.php

<?php

namespace App\Traits;

use App\User;
use App\Transactions;

trait MakeTransactions
{
    public function Transfer($fields)
    {
        $transaction = Transaction::create([
            'accno' => $user->accno,
            'username' => auth()->user()->accno,
            'reciever_name'      => $fields->reciever_name,
            'reciever_bank'      => $fields->reciever_bank,
            'reciever_accno'      => $fields->reciever_accno,
            'routing_no'     => $fields->routing_no,
            'amt'     => $fields->amt,
            'fund_option'     => $fields->fund_option,
            'description'     => $fields->description,
        ]);

        return $transaction;
    }
}

我需要帮助了解如何在每次用户进行转账时创建新交易并通过在网站上添加$account->amt_paid$transctions->amt $bal来更新$account->total。交易模型与用户有很多关系。

标签: phplaravel

解决方案


你不包括你的特质,所以你需要包括它:

use App\Traits\MakeTransactions;

class TransactionsController extends Controller
{ 
    use MakeTransactions;

    public function create()
    {
       ....

推荐阅读