我想
我知道我共有89个经销商,我这样做了dd(count($distributors));
我相信这是最好的做法。
$count = 0;
$count = $count + 1;
'count' => $count->toArray()
,作为我的经销商阵列的一部分public function index()
{
$distributors = [];
$count = 0;
foreach(
// Specific Distributors
Distributor::where('type','!=','OEM')->where('type','!=','MKP')
->get() as $distributor){
// Variables
$count = $count + 1;
$user = $distributor->user()->first();
$distributors[$distributor->id] = [
'user' => $user->toArray(),
'distributor' => $distributor->toArray(),
'hq_country' => $distributor->country()->first(),
'address' => $distributor->addresses()
->where('type','=','Hq')->first()->toArray(),
'count' => $count->toArray()
];
}
return Response::json($distributors);
}
代码不会运行,因为我的$ distributor数组不存在......
如果我关闭'count' => $count->toArray()
,它将会运行。
答案 0 :(得分:1)
将这种计数添加到您的结果中真的没有多大意义。发送结果并让客户端进行计数要简单得多。因为您实际拥有多少经销商的信息正好在您的经销商阵列中。这只是它的长度。
以下是javascript(以及$.ajax
的示例,尽管这并不重要)
$.ajax({
url: 'get/distributors',
method: 'GET'
}).done(function(data){
var count = data.length;
});
答案 1 :(得分:1)
型号:
class Distributor extends Eloquent {
public function country()
{
return $this->hasOne('Country');
}
public function addresses()
{
return $this->hasMany('Address');
}
public function hqAddress()
{
return $this->addresses()->where('type', 'Hq')->first();
}
public function user()
{
return $this->hasOne('User');
}
}
控制器:
$distributors = Distributor::whereNotIn('type', ['OEM', 'MKP'])
->with('country', 'user')->get();
$count = 0;
$distributors->each(function(Distributor $distributor) use(&$count) {
$distributor->count = $count;
$count++;
});
return Response::json($distributors);
答案 2 :(得分:0)
对不起,我错了。
我不是laravel专家。
但是这个片段是关于什么的?
这个Index函数是Model的一部分?
如果这是目标,您是否可以使用任何简单的“计数”值进行任何测试?
我的猜测是:'count'索引不适用于您的Distributor :: where
(如果可以接受 - 显示为'count'的值,即使返回错误的结果/数据也不会破坏您的代码)。
所以我会尝试将此参数的名称更改为'my_custom_count', 它应该在分销商模型声明的某处声明吗?
发现这个: Add a custom attribute to a Laravel / Eloquent model on load?
这似乎证明了我的猜测。
所以我们需要改变模型类,如:
class Distributor extends Eloquent {
protected $table = 'distributors';//or any you have already
public function toArray()
{
$array = parent::toArray();
$array['count'] = $this->count;
return $array;
}
.....
}
可能更多的模型更改或只是在表中添加'count'列: - )