【问题标题】:Call to undefined function App\Transaksi()调用未定义函数 App\Transaksi()
【发布时间】:2018-12-16 12:54:55
【问题描述】:

我的编码有问题,我想在我的数据库中计算用户,但它似乎是这样的

Symfony\Component\Debug\Exception\FatalThrowableError (E_ERROR) 调用未定义函数 App\Transaksi()**

这是我的 index.php

 <div class="col-lg-4 col-xs-6">
<!-- small box -->
<div class="small-box bg-aqua">
  <div class="inner">
    <h3>{{ $list->transaksi }}</h3>

    <p>Transaksi</p>
  </div>

还有我的controller.php

<?php
namespace App\Http\Controllers;

use Illuminate\Http\Request;

class BackController extends Controller
{
public function list()
{

$transaksi = \App\Transaksi::get();
$transaksi = \App\Transaksi('id')->count();

 return view('/admin', compact('list'));
 }

}

和我的路线

Route::group(['prefix'=>'user','middleware' => ['auth', 'role:member']],
function (){
    Route::get('/mybook','FrontController@mybook');
});

Route::group(['prefix'=>'admin','middleware' => ['auth', 'role:admin']], function(){


Route::get('/',function() {
  return view('admin.index');
});
Route::get('/','BackController@list');
Route::get('logout','UserController@logout');

谢谢。

【问题讨论】:

    标签: php laravel laravel-5


    【解决方案1】:

    抱歉,您的列表功能中的主要错误是

    public function list()
    {
    
    $transaksi = \App\Transaksi::get();
    $transaksi = \App\Transaksi('id')->count();
    
     return view('/admin', compact('list'));
     }
    

    你正在使用相同的变量名来

    检索所有记录$transaksi = \App\Transaksi::get(); 和 也用于统计所有记录$transaksi = \App\Transaksi('id')-&gt;count();

    而且你也没有将它传递给 balde viewer

    相反,您传递的是函数名称list

    return view('/admin', compact('list'));
    

    解决您的问题

    首先你不需要在每个地方都写\App\Transaksi

    只需转到控制器顶部并添加此行

    use App\Transaksi;
    

    然后你的功能

    有几种方法可以统计记录

    方法一:

    public function list()
    {
       $transaksi= Transaksi::latest()->paginate(10);
       return view('transaksi.index', compact('transaksi'));
    }
    

    这里view('transaksi.index')指的是

    Projectname/resources/views/transaksi/index.blade.php
    

    然后在你的 index.blade.php 中使用代码来获取计数

    <h3 class="modal-title">{{ $transaksi->total() }} {{ str_plural('Transaksi', $transaksi->count()) }} </h3>
    

    方法二:

    public function list()
        {
            $transaksi  = Transaksi::latest()->get();
            $recordCount = Transaksi::count();
            return view('transaksi.index', compact('transaksi','recordCount'));
        }
    

    然后在你的刀片文件中

    <h3>{{ $recordCount }}</h3>
    

    希望对你有帮助

    【讨论】:

    • 感谢您为我的错误提供的完整指南,我现在正在尝试它,我仍然是 laravel 的初学者,您的帮助对我来说意味着一切,再次感谢。
    【解决方案2】:

    您的控制器现在没有做太多事情。视图必须是有效的刀片模板文件,例如admin.index,而不是 /admin。然后你需要将一个变量传递给视图,而不是函数名。

    public function list()
    {
    
        $transaksi = \App\Transaksi::all();
        $numTransaksi = $transaksi->count();
    
        return view('admin.index', compact('numTransaksi'));
    }
    

    然后在视图中您可以通过{{ $numTransaksi }} 访问计数。

    您的web.php 中还有两条/ 路由。如果您希望 BackController@list 函数正确调用,您应该去掉第一个。

    这是你的意思吗?

    【讨论】:

    • 谢谢你的回答,我对laravel还是新手,下次我会学习你的建议,再次感谢你。
    猜你喜欢
    • 2020-07-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-15
    • 2020-02-26
    • 2019-11-17
    • 2017-08-26
    相关资源
    最近更新 更多