Как получить данные из таблицы в модели в рамках Larvel и непосредственно использовать в представлении? - PullRequest
0 голосов
/ 16 января 2020

Я создал модель, как показано ниже

<?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();
}

В основном мое представление уже загружено, мне нужно проверить условие и вызвать вышеуказанную модель для подсчета данных.

Ответы [ 3 ]

0 голосов
/ 16 января 2020

Создайте модель, соответствующую таблице:

php artisan make:model Sabc

Откройте файл этой модели и задайте имя таблицы:

protected $table = 's_abc';

Если вы хотите получить счетчик Количество строк в вашей таблице, которое соответствует модели, это просто:

Sabc::count();
0 голосов
/ 16 января 2020

Прежде всего, я думаю, вам нужно посмотреть Laravel Структура фреймворка: Laravel Структура каталогов и содержимое внутри нее .

В принципе вам не нужно определять маршрут к получить данные из базы данных. Вы должны правильно определить модель - короче говоря, каждая таблица в вашей базе данных должна иметь одну модель в вашем приложении.

У вас есть tablse 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();

Надеюсь, это поможет вам

0 голосов
/ 16 января 2020

Я думаю, вы ищете вспомогательную функцию.

В вопросе вы создали 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;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...