为什么我的laravel5.2将在DB类中显示undefine方法

时间:2016-03-27 18:05:07

标签: php mysql laravel

我创建了一个类并将其扩展为模型。现在我需要调用我已经在mysql数据库中创建的mysql存储过程但是当我使用DB::select时它从这个模型类中显示了未定义的方法。使用use Illuminate\Support\Facades\DB;后,问题仍然存在。

我的代码是:

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;
use Illuminate\Support\Facades\DB;

class Domain extends Model
{
    public $table = 'english_news';

    public static function getEngNews()
    {
        return DB::select("call getUserNews");
    }
}

3 个答案:

答案 0 :(得分:0)

documents开始,这是使用Laravel查询构建器进行选择的正确方法

  

$ users = DB :: table('users') - &gt; select('name','email as user_email') - &gt; get();另一个例子   $ query = DB :: table('users') - &gt; select('name');

您的代码似乎试图调用查询中的另一个函数,这在我所知道的Laravel中不起作用。查询构建器旨在为您在Eloquent结构中构建查询提供一些灵活性。

答案 1 :(得分:0)

您是否尝试过使用DB::statement('call getUserNews');?这是使用Laravel的DB Facade编写硬编码sql语句的推荐方法。请查看https://laravel.com/docs/5.2/database#running-queries中的statement部分。

答案 2 :(得分:0)

打开命令行以创建一个模型:

php artisan make:model ModelName

现在一个文件将在App文件夹中创建。 打开该文件,

namespace App;
use Illuminate\Database\Eloquent\Model;
class ModalName extends Model
{
 protected $table = 'english_news'; //Fill this portion.
}

在控制器中:

public static function getEngNews()
{
    return ModalName::select("getUserNews");
}