我想從我的數據庫中獲取數據,然後在我的模型中,我希望在將數據傳遞給我的視圖之前,對數據做一些php的操作。從控制器訪問模型?
通常我會做到這一點讓我所有的數據:
->with('content', Content::all());
但我已經建立了在我的模型名爲test的函數:
public function test(){
//get and modify data here
}
我如何可以訪問此使用:
->with
從我的控制器?
我想從我的數據庫中獲取數據,然後在我的模型中,我希望在將數據傳遞給我的視圖之前,對數據做一些php的操作。從控制器訪問模型?
通常我會做到這一點讓我所有的數據:
->with('content', Content::all());
但我已經建立了在我的模型名爲test的函數:
public function test(){
//get and modify data here
}
我如何可以訪問此使用:
->with
從我的控制器?
你所要做的並不是真正解釋正確,但我會盡力回答。
從我所瞭解的情況來看,您希望在模型使用前進行一些數據轉換。但是你在test()函數中的註釋說你想要獲取和修改數據。
在laravel,用於獲取和修改數據的功能是分開的:
爲獲得數據,則可以定義一個查詢範圍(http://four.laravel.com/docs/eloquent#query-scopes)。查詢範圍通常是用於向現有查詢添加一些參數的簡稱。
對於在從模型中讀取數據之前或在將模型分配到模型之前修改數據,Eloquent提供了一個稱爲增變器(http://four.laravel.com/docs/eloquent#accessors-and-mutators)的系統。增變器是在讀取或分配字段值時調用的方法。通常情況下,將php類型轉換爲數據庫類型(例如,在保存時將數組轉換爲json,然後將json轉換爲讀取數組)。一個增變器可以用來填充一些額外的值或對值進行一些額外的檢查。
我希望我已經幫了你一下。如果你沒有找到它是一個正確的答案,請澄清你的問題,所以我可以幫助你多一點。
這是你正在尋找的?
型號:
public static function foo($bar) {
return static::where('foo', '=', 'bar');
}
控制器:
->with('content', Foo::foo("test"));
如果你做這個 '測試' 功能的靜態,將它與你的工作? ,因爲它與我一起工作,但我沒有得到你的例子.. –
你能提供一個更深入的描述你想要做什麼?也許'用()'不是最好的辦法。 – vFragosop