2016-03-27 1 views
2

私はクラスを作成し、それをフォームモデルとして拡張します。今私はmysqlデータベースで作成したストアドプロシージャをmysqlと呼ぶ必要がありますが、このモデルクラスからはDB::selectを使用すると未定義のメソッドが表示されます。 use Illuminate\Support\Facades\DB;を使用した後も問題は残ります。私のlaravel5.2がDBクラスの未定義メソッドを表示する理由

私のコードは次のとおりです。documentsから

<?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"); 
    } 
} 
+0

変更が選択::へ::声明 – Ohgodwhy

+0

私はmysqlデータベースに書き込むストアドプロシージャを呼び出すようにしようとしていますあなたのデシベルフィールド –

答えて

0

これはあなたが選択

$ユーザー= DB ::テーブル( 'ユーザー' を実行するためにLaravelクエリビルダを使用する適切な方法であります) - > select( 'name'、 'email as user_email') - > get();別の例として $ query = DB :: table( 'users') - > select( 'name');

あなたのコードは、私が知っているLaravelでは動作しない別の関数を呼び出しようとしているようです。クエリービルダーは、Eloquent構造でクエリーを構築する際に柔軟性を持たせるためのものです。

+0

を貼り付けます。 –

+0

https://laracasts.com/discuss/channels/general-discussion/running-stored-procedures?page=1それは私が信じるあなたの質問に対処する – aallord

0

DB::statement('call getUserNews');を試しましたか?これは、LaravelのDBファサードを使用してハードコードされたSQL文を書き込むための推奨される方法です。 statementセクションをhttps://laravel.com/docs/5.2/database#running-queriesでご覧ください。一つのモデルを作成するための

0

を開き、コマンドライン:

php artisan make:model ModelName 

は今、一つのファイルは、アプリケーションフォルダ内に作成されます。コントローラでは、

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"); 
} 
関連する問題