如何从 laravel 框架中的模型中的表中获取数据并直接在视图中使用?

Posted

技术标签:

【中文标题】如何从 laravel 框架中的模型中的表中获取数据并直接在视图中使用?【英文标题】:How to fetch data from table in model in larvel framework and directly use in view? 【发布时间】:2020-01-16 06:56:13 【问题描述】:

我已经创建了一个如下所示的模型

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class countData extends Model

    //
    public function countAbc () 

        // i don't know how to write in laravel query so for understanding purpose i wrote in simple pg query
        $sql=pg_query("select count(*) as countrow from s_abc");
        $countfetch=pg_fetch_array($sql);
        return $countfetch[0];
    

我没有此功能的任何路线。在查看页面上,我正在检查

@if( $Item->ClassID == 'abc' )

//then call the above model and use countAbc () function
countAbc();

基本上我的视图已经加载完毕,需要检查条件,调用上面的模型来统计数据。

【问题讨论】:

我想你需要知道如何创建和定义model 基本上如何在模型中从数据库中获取数据并在视图中使用而不创建任何路由 看来你有一个表s_abc,所以你可以定义一个模型名称SAbc。这样就可以统计这张表的数据了。 是的。意味着我必须创建一个与我的表名同名的模型? 是的。所以你可以这样做:$countrow = SAbc::count() 【参考方案1】:

我认为您正在寻找辅助功能。

您已经创建了 countAbc() 函数并且您想在任何地方调用它。

用于在helpers.php 文件中而不是model file 中创建函数

在您的应用文件夹中创建一个helpers.php 文件并使用composer 加载它:

"autoload": 
    "classmap": [
        ...
    ],
    "psr-4": 
        "App\\": "app/"
    ,
    "files": [
        "app/helpers.php" // <---- ADD THIS
    ]
,

将其添加到您的 composer.json 文件后,运行以下命令:

composer dump-autoload

然后,把你的这个函数放到helpers.php

public function countAbc () 
        $sql=pg_query("select count(*) as countrow from s_abc");
        $countfetch=pg_fetch_array($sql);
        return $countfetch[0];

现在,您可以在任何地方访问它。

public function countAbc () 
        $counts_abc = \DB::table('s_abc')->count();
        return $counts_abc;

【讨论】:

【参考方案2】:

创建对应表的模型:

php artisan make:model Sabc

打开该模型文件,并设置表名:

protected $table = 's_abc';

如果您想获取表中与模型对应的行数,很简单:

Sabc::count();

【讨论】:

【参考方案3】:

首先我觉得你得看看 Laravel 框架结构:Laravel Directory Structure And contents inside it。

基本上,您不必定义从数据库中获取数据的路径。 您必须正确定义模型 - 长话短说,您的数据库中的每个表都必须在您的应用中有一个模型。

你有表s_abc你必须定义模型SAbc

php artisan make:model SAbc - 此命令将为您制作模型。

之后,您可以使用 Eloquent 聚合函数来获取计数,也可以在其中编写自己的方法:

使用聚合函数:

...
use App\SAbc;
...
class SomeClass 
    ...
    $count_sabc = SAbc::count();
    ...

...

使用你自己的方法

在你的模型中写:

...
class SAbc extends Model 
    public function getCount() 
        return self::count();
        // Or with raw query
        // return self::selectRaw('count(*) as count')->first()->count
    

...

// Then you can use this methd anywhere you want like that:
(new SAbc)->getCount();

希望对你有帮助

【讨论】:

视图中未找到“SAbc”类 您必须将其包含在视图文件中或使用绝对路径写入。 App\SAbc::count()。但永远不要在您的视图中运行查询 类 'SAbc' 未找到(查看:C:\xampp\htdocs 我正在使用此方法(新 SAbc)->getCount(); 您必须将其包含在您的文件中。 use App\SAbc 或您将模型放入的任何命名空间

以上是关于如何从 laravel 框架中的模型中的表中获取数据并直接在视图中使用?的主要内容,如果未能解决你的问题,请参考以下文章

Laravel - 从不同的表中获取总和并计算

如何从 Laravel 5.1 中的表而不是“用户”表中对用户进行身份验证?

如何从数据库中的表中打印该特定选项的所有数据?

如何从mysql中的表中选择N条记录

如何从laravel中的数组中获取键名

Laravel 从关系表中获取数据