[英]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.