0
我可以使用作用域執行基本的模型相關查詢(例如選擇那些今天有生日的用戶),範圍顯然被放置在Eloquent模型中並返回一個Eloquent Query Builder實例。但是如果我需要執行更復雜的查詢,比如說通過電子郵件類型分組大量的電子郵件日誌表,加入用戶和電子郵件並應用一些聚合,會怎麼樣?由於查詢的結果字段是混合的(電子郵件,電子郵件類型,用戶,日誌字段),所以我必須使用數據庫查詢生成器。我在猶豫是否想給建造者打電話最好的地方。Laravel中的數據庫查詢生成器的地方
是可以在我加入其他表中的主力機型靜態方法:
class ConcreteModel extends Model {
public static function someQuery(): \Illuminate\Database\Query\Builder {
return \DB::table('some_table')->join('something');
}
}
或許寧可把這樣的東西在需要它的服務?
控制器或服務可能是此類查詢的好地方。 – linuxartisan
@linuxartisan我害怕使用任何業務邏輯混淆我的控制器,這就是爲什麼我認爲查詢應該放在使用服務中作爲模型的替代方法。 – Sergey
爲什麼不使用存儲庫模式?您可以輕鬆分離業務邏輯和數據結構的各個層。 –