当我使用var_dump($paid)
时,它会显示所有值
这是代码。如果我使用全部3 description, amount, and payment_type
,则会显示错误,该数量未定义。但是,如果我只使用1例如,我只使用description
并删除其余的代码将起作用
$paid = array();
foreach ( $user as $u ) :
$paidDetail = \App\PaymentTransaction::where('user_id','=', $u->user_id)->get();
if ($paidDetail->count()) :
$paid[]['description'] = $paidDetail[0]->description;
$paid[]['amount'] = $paidDetail[0]->amount;
$paid[]['payment_type'] = $paidDetail[0]->payment_type;
endif;
endforeach;
return $paid;
这是视图/刀片显示前端的详细信息
{{ $paid['description'] }}
{{ $paid['amount'] }}
{{ $paid['payment_type'] }}
显示其中的每一个都有效但同时显示所有这些将显示错误,表示第二个值未定义
以下是var_dump($ paid)
array(1){[" description"] =>字符串(33)"计划PRO的订阅付款" }
array(1){[" amount"] => float(350)}
array(1){[" payment_type"] =>字符串(27)" Stripe Payment Subscription" }
array(1){[" description"] =>字符串(38)" PRO的测试计划订阅付款" }
array(1){[" amount"] => float(351)}
array(1){[" payment_type"] =>字符串(27)" Stripe Payment Subscription" }
答案 0 :(得分:0)
这只是因为,
foreach循环覆盖 0索引参数以及每次最后一条记录存储在数组中。
在foreach循环的每次迭代中执行查询都可能会降低代码性能。
你应该使用laravel eloquent模型和关系解决这个问题。
答案 1 :(得分:-1)
试试这个:
$paid = array();
$i=0;
foreach ( $user as $u ) :
$paidDetail = \App\PaymentTransaction::where('user_id','=', $u->user_id)->get();
if ($paidDetail->count()) :
$paid[$i]['description'] = $paidDetail[0]->description;
$paid[$i]['amount'] = $paidDetail[0]->amount;
$paid[$i]['payment_type'] = $paidDetail[0]->payment_type;
$i++;
endif;
endforeach;
return $paid;
代码的主要问题是您忘记在数组上使用索引。添加$i
作为索引可确保每个用户付款都有自己的索引。
通过集合并为每个用户执行SQL QUERY并没有错,但也不是一个好习惯。尝试将两者都放在一个SQL Statment中。