Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Laravel 要数组还是不要数组?_Laravel_Laravel 4_Eloquent - Fatal编程技术网

Laravel 要数组还是不要数组?

Laravel 要数组还是不要数组?,laravel,laravel-4,eloquent,Laravel,Laravel 4,Eloquent,在我的模型中,我使用以下方式获取数据: $this->all(); 然后返回到我的控制器,该控制器生成一个视图: return View::make('myView') ->with('data', $this->myModel->getAll()); 我的问题是,最佳实践是什么,模型应该返回雄辩的对象还是数组?通过调用->toArray()?在我看来,更干净、优雅的方式总是返回一个对象 在模型中,我会这样做 class Employee extend

在我的模型中,我使用以下方式获取数据:

$this->all();
然后返回到我的控制器,该控制器生成一个视图:

return View::make('myView')
        ->with('data', $this->myModel->getAll());

我的问题是,最佳实践是什么,模型应该返回雄辩的对象还是数组?通过调用->toArray()?

在我看来,更干净、优雅的方式总是返回一个对象

在模型中,我会这样做

class Employee extends Eloquent {
    protected $table = 'employees';

}
在控制器中

public function index(){
    $employees= Employee::get();

    return View::make('index')->with('employees', $employees);
}
他认为:

@foreach($employees as $employee)
    {{ $employee->name }}
@endforeach

在我看来,更干净、优雅的方式总是返回一个对象

在模型中,我会这样做

class Employee extends Eloquent {
    protected $table = 'employees';

}
在控制器中

public function index(){
    $employees= Employee::get();

    return View::make('index')->with('employees', $employees);
}
他认为:

@foreach($employees as $employee)
    {{ $employee->name }}
@endforeach

简单地说,这取决于您希望如何处理返回的数据。在大多数情况下,我们在视图中遍历返回的数组(使用blade),并将其附加到某个HTML列表中。我对传递给视图和单元测试的数据有一些问题。
简单地说,测试不接受对象,所以我必须显式地传递数组。

简单地说,这取决于您想对返回的数据做什么。在大多数情况下,我们在视图中遍历返回的数组(使用blade),并将其附加到某个HTML列表中。我对传递给视图和单元测试的数据有一些问题。
简单地说,测试不接受对象,所以我必须明确地通过数组。

简单的答案是作为对象离开。在我看来,当对象可以在视图中使用时,转换为数组似乎很愚蠢

考虑一下,如果您可能需要通过模型的关系进行foreach-使用一个数组,您要么没有这个数组,要么必须预加载它(即使您不必总是使用它),使用一个对象,您可以选择使用这个关系(如果您想用的话)

现在,我知道这与您之前关于向视图传递数组和对象的问题有关,但这是一个完全不同的问题。在这个问题中,你基本上是在说“有时我有一个对象,有时我有一个对象集合,我如何在视图中处理它”。对此,我的答案是,您必须确保视图始终看到集合(或数组或其他内容),但决不实际将对象转换为数组

在这种情况下,如果您只获得一个对象,只需在对象进入视图之前将其包装在集合(或数组)中,就可以很容易地完成标准化数据

将结果包装到集合中 有很多方法可以做到这一点,这取决于您首先是如何获取数据的。如果您正在进行自己的雄辩调用,那么最简单的解决方案是始终使用
->get()
,而不是有时使用
->find()
->first()
。如果使用
->get()
,即使在期望单个结果的时候,它也会返回一个已包装在集合中的单个结果

但是,如果您提供了这个someties对象数组,那么您必须手动执行此操作。同样,这有两种不同但非常相似的技术,这取决于数据是否与Eloquent和Collection兼容,或者是否是更原始的PHP对象和数组

雄辩兼容 标准对象和数组
其实就这么简单。

简单的答案是作为对象离开。在我看来,当对象可以在视图中使用时,转换为数组似乎很愚蠢

考虑一下,如果您可能需要通过模型的关系进行foreach-使用一个数组,您要么没有这个数组,要么必须预加载它(即使您不必总是使用它),使用一个对象,您可以选择使用这个关系(如果您想用的话)

现在,我知道这与您之前关于向视图传递数组和对象的问题有关,但这是一个完全不同的问题。在这个问题中,你基本上是在说“有时我有一个对象,有时我有一个对象集合,我如何在视图中处理它”。对此,我的答案是,您必须确保视图始终看到集合(或数组或其他内容),但决不实际将对象转换为数组

在这种情况下,如果您只获得一个对象,只需在对象进入视图之前将其包装在集合(或数组)中,就可以很容易地完成标准化数据

将结果包装到集合中 有很多方法可以做到这一点,这取决于您首先是如何获取数据的。如果您正在进行自己的雄辩调用,那么最简单的解决方案是始终使用
->get()
,而不是有时使用
->find()
->first()
。如果使用
->get()
,即使在期望单个结果的时候,它也会返回一个已包装在集合中的单个结果

但是,如果您提供了这个someties对象数组,那么您必须手动执行此操作。同样,这有两种不同但非常相似的技术,这取决于数据是否与Eloquent和Collection兼容,或者是否是更原始的PHP对象和数组

雄辩兼容 标准对象和数组
其实就这么简单。

回答得很好,这确实与另一个问题有关,我该如何在集合中包装对象?我会更新我的答案来解释,因为根据您的用例有许多不同的方法。谢谢,那么我该如何更改以下查询以获取?返回$this->with(array('looks'=>函数)($query){$query->wherePublished(1)->orderBy('sort')->take(3)->skip(0);}))->find($id,array('id',title',thumb',banner,'video'));我会这样说:
return$this->with(array('looks'=>函数($query){$query wherePublished(1)->orderBy('sort')->take(3)->skip(0);)->whereId($id)->get(array)->('id','title','thumb','banner','video');
如您所见,我已将'find'转换为whereId,并将select列放入
->get()
部分。请进行明显的测试,但即使这不太正确,它也会帮助您实现目标。答案很好,它确实与另一个问题有关,我该如何包装