簡體   English   中英

在模型中的數據庫查詢生成器中使用控制器變量-Laravel

[英]Using Controller Variable in DB Query Builder in a Model - Laravel

目前,我已經在使用查詢生成器的Controller方法中查詢了。 像這樣:

 public function postFilters(){
    $filt = Input::get('name');
    $query = DB::table('wm.top_pages')->where('filter',$filt)->limit(20)->get();

    return View::make('topPages.table', ['wm'=>$query]);
} 

我想查詢查詢以外的Controller並進入我的模型。 但是每次我這樣做時,都會出現錯誤,因為與上面相同的查詢,但是現在我的模型內部無法識別變量$ filt,該變量實際上是從View獲取的。 誰能建議如何解決這個問題? 我在上面所做的實際上不是MVC的樣子,我假設有一些解決方法。 我只是無法理解有關該特定主題的大多數文檔。

非常感謝。

好吧,如果我是您,我將創建一個Repository接口,並為其創建一個實現,在該實現中,我將添加所有查詢,然后將變量過濾器作為參數傳遞,然后在控制器中注入我的界面(使用laravel真的很簡單)。 因此,我最終得到了一個可擴展的應用程序,如果我想從MySQL切換到另一個數據庫,我要做的就是創建一個新的實現並配置laravel以使用該新實現。 這就是我的方法。 如果您想了解更多關於Repository模式的信息, 這是一篇很好的文章。

我不知道您為什么向模型發送查詢,無論原因為何,代碼如下:

在您的模型中

<?php 
 class SomeModel extends Eloquent
 {
 public static function funcname($filter,$data)
 {
 // the filter passed from controller is in $filter
 }
 }

在您的控制器中

 $filt = Input::get('name');
 $query = DB::table('wm.top_pages')->where('filter',$filt)->limit(20)->get();

 //pass the data from this controller to funcname function we created in model
 SomeModel::funcname($filt,$query);

感謝@Elias Van Ootegem:

我將變量作為參數/參數傳遞給了模型函數,並且它起作用了。 控制器:

 public function postFilters(){
   $filt = Input::get('name');
   $query = webmasters::getFilters($filt);
   return View::make('topPages.table', ['webmasters'=>$query]);
 } 

模型:

class webmasters {
   public static function web($filt) {
   $top_pages = DB::table('wm.top_pages')->where('filter',$filt)->limit(20)->get();
   return $top_pages;
}

}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM