【发布时间】:2019-06-23 14:08:33
【问题描述】:
假设我正在编写一个具有以下功能的 Laravel 控制器:对模型进行简单搜索并对结果执行任何操作。像这样的东西(为了简单起见,没有任何验证):
public function search($name)
{
$person = Persons:where('name', $name)->first();
doSomethingWith($person);
// ...
}
我应该将这个微小的 Eloquent 代码移动到 Person 模型的专用函数中吗?
通常我将所有“复杂”操作写入模型以获得简短且可读的控制器,但是当我不得不做这样的小操作时,我总是发现移动一行代码(即使它与数据库直接相关)进入一个单独的模型函数会给我的代码带来太多的开销。
【问题讨论】:
-
真的取决于
doSomethingWith($person)的作用。如果它只是一个转换,你应该使用像 EloquentResource 这样的转换器,如果它正在改变$person它可能不应该在search()方法中完成。如果它与Persons模型紧密耦合,则将其移至模型似乎是合理的,具体取决于其他因素,例如应用程序的大小和方法的可重用性。不管怎样,这个问题不太适合 StackOverflow -
您好 DevK,感谢您的评论。我的问题与
doSomethingWith($person)无关,而是与$person = Persons:where('name', $name)->first();相关