当我使用first()
或dd()
进行检查时,我使用Laravel的数据库vardump()
运行查询,该数据返回一个对象。但是当我尝试使用echo ($promotion->pp_name);
打印该值时,它会出错,但在dd($promotion->pp_name);
<?php dd($promotion->pp_name); ?>
打印&#34; urgent&#34;
<?php echo ($promotion->pp_name); ?>
但它提供&#34;尝试获取非对象的属性&#34;
完整对象转储结果:<?php dd($promotion); ?>
{#196 ▼
+"ppo_id": 23
+"ppo_prj_id": 68
+"ppo_pp_id": 4
+"ppo_updated_date": "2014-05-20"
+"ppo_status": 1
+"pp_id": 4
+"pp_name": "urgent"
+"pp_dispText": "I want my project to be marked as an urgent project"
+"pp_amount": "5.00"
+"pp_updated_date": "2013-08-09"
+"pp_status": 1
}
和返回此对象的函数。
function getProjectPromotion($value='')
{
$project_id = $value;
$promotion = DB::table('project_promotion_option')
->join('project_promotion', 'project_promotion_option.ppo_pp_id', '=', 'project_promotion.pp_id')
->where('ppo_prj_id', '=' , $project_id )
->first();
return $promotion;
}
答案 0 :(得分:6)
你是在循环中调用这个方法吗?执行dd()时,脚本会在第一次循环运行后以正确的结果停止,并且一切正常。但是当你在循环中回显时,它会继续,我的猜测是,在某些时候你会传递一些破坏了该方法的损坏数据。
我们需要查看代码摘录,您要调用上述方法来验证此预感。
答案 1 :(得分:0)
正如Tadas Paplauskas所建议的那样,因为函数调用查询在foreach中运行每个循环,并且在某些迭代中DB :: first()方法返回null,因此echo获取错误。我通过首先检查是否设置了值来解决这个问题。
<?php if (isset($promotion->pp_name)) {
echo $promotion->pp_name;
} ?>