如何从laravel 5中的模型中获得结果

如何从laravel 5中的模型中获得结果,laravel,laravel-5,Laravel,Laravel 5,你好,我正在尝试通过我的控制器从调用了Mainmodel的模型中获取结果,我的控制器是MainController 这是我的控制器 <?php namespace App\Http\Controllers; use Illuminate\Http\Request; use app\Mainmodel; class MainController extends Controller { function index(){ echo "Kok, direct

你好,我正在尝试通过我的控制器从调用了
Mainmodel
的模型中获取结果,我的控制器是
MainController

这是我的控制器

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use app\Mainmodel;

class MainController extends Controller
{


    function index(){
        echo "Kok, direct akses sih?";
    }

    function get_menu(){
         $menu = app\Mainmodel::request_menu();
         dd($menu);
    }

}
通过上面的脚本,我得到了这个

MainController.php第17行中的FatalErrorException:类 找不到“App\Http\Controllers\App\Mainmodel”

我怎样才能解决这个问题?提前谢谢

注意:我有点被拉威尔搞糊涂了。我以前用过codeigniter。我有一个简单的问题。在请求数据库的laravel中,我应该使用模型吗?或者我可以使用我的控制器来请求数据库


对不起,我的英语不好。

我想这是因为您使用
app
而不是
app
作为名称空间

尝试更改:

app\Mainmodel
致:

或者,您可以在类的顶部添加
use
语句,然后只引用类,即:

use App\Mainmodel;
然后你可以做一些类似的事情:

Mainmodel::request_menu();
<?php

namespace App\Http\Controllers;

use App\Menu;

class MainController extends Controller
{
    public function index()
    {
        echo "Kok, direct akses sih?";
    }

    public function get_menu()
    {
        $menu = Menu::orderBy('order', 'desc')->get();
        dd($menu);
    }

}

您当前使用模型的方式不是应该使用的方式。正如我在评论中提到的,您应该为数据库中的每个表创建一个模型(或者至少为大多数用例创建一个模型)

要执行此操作,请执行以下操作:

php artisan make:model Menu
然后在新创建的
菜单中添加:

protected $table = 'menu';
这是因为Laravel的默认命名约定是类名为单数,表名为复数。因为您的表名是菜单而不是菜单,所以只需告诉Laravel使用不同的表名即可

然后,您的控制器看起来像:

Mainmodel::request_menu();
<?php

namespace App\Http\Controllers;

use App\Menu;

class MainController extends Controller
{
    public function index()
    {
        echo "Kok, direct akses sih?";
    }

    public function get_menu()
    {
        $menu = Menu::orderBy('order', 'desc')->get();
        dd($menu);
    }

}

我想这是因为您使用
app
而不是
app
作为名称空间

尝试更改:

app\Mainmodel
致:

或者,您可以在类的顶部添加
use
语句,然后只引用类,即:

use App\Mainmodel;
然后你可以做一些类似的事情:

Mainmodel::request_menu();
<?php

namespace App\Http\Controllers;

use App\Menu;

class MainController extends Controller
{
    public function index()
    {
        echo "Kok, direct akses sih?";
    }

    public function get_menu()
    {
        $menu = Menu::orderBy('order', 'desc')->get();
        dd($menu);
    }

}

您当前使用模型的方式不是应该使用的方式。正如我在评论中提到的,您应该为数据库中的每个表创建一个模型(或者至少为大多数用例创建一个模型)

要执行此操作,请执行以下操作:

php artisan make:model Menu
然后在新创建的
菜单中添加:

protected $table = 'menu';
这是因为Laravel的默认命名约定是类名为单数,表名为复数。因为您的表名是菜单而不是菜单,所以只需告诉Laravel使用不同的表名即可

然后,您的控制器看起来像:

Mainmodel::request_menu();
<?php

namespace App\Http\Controllers;

use App\Menu;

class MainController extends Controller
{
    public function index()
    {
        echo "Kok, direct akses sih?";
    }

    public function get_menu()
    {
        $menu = Menu::orderBy('order', 'desc')->get();
        dd($menu);
    }

}

您可以通过不同的解决方案来解决它。解决方案是您不必调用
request_menu()您可以在控制器中获取它

主控制器

use use Illuminate\Support\Facades\DB;

public function get_menu(){
             $menu =  DB::table('menu')
            ->orderBy('Your_Field_Name', 'DESC')
            ->get();

             dd($menu);
}

你可以用不同的方法来解决它。解决方案是您不必调用
request_menu()您可以在控制器中获取它

主控制器

use use Illuminate\Support\Facades\DB;

public function get_menu(){
             $menu =  DB::table('menu')
            ->orderBy('Your_Field_Name', 'DESC')
            ->get();

             dd($menu);
}

更改
使用app\main模型
使用App\main模型在您的控制器中,当我使用laravel时,仅使用
使用Mainmodel此外,我不确定您是否以最佳方式使用模型。您应该为数据库中的每个表使用一个模型。查看:更改
使用app\main模型
使用App\main模型在您的控制器中,当我使用laravel时,仅使用
使用Mainmodel此外,我不确定您是否以最佳方式使用模型。您应该为数据库中的每个表使用一个模型。请查看:@YVS1102尝试从命令行运行
composer dumpautoload
,现在错误为change。非静态方法App\Mainmodel::request\u menu()不应静态调用,假设$this来自不兼容的context@YVS1102这是因为您正在调用一个非静态方法,使函数为静态
静态函数请求\u菜单
@YVS1102我更新了答案,向您展示了如何为菜单表设置模型。@YVS1102可以将其保留为空,但最终会添加到其中。通常,您会将关系和作用域添加到模型中,甚至更多。查看我在上面的评论中添加的视频,并@YVS1102尝试从命令行运行
composer dumpautoload
。确定,现在错误已更改。非静态方法App\Mainmodel::request\u menu()不应静态调用,假设$this来自不兼容的context@YVS1102这是因为您正在调用一个非静态方法,使函数为静态
静态函数请求\u菜单
@YVS1102我更新了答案,向您展示了如何为菜单表设置模型。@YVS1102可以将其保留为空,但最终会添加到其中。通常,您会将关系和作用域添加到模型中,甚至更多。看看我在上面的评论中添加的视频,以及