我有左连接的查询,这是phpmyadmin中的返回数据
SELECT * FROM `items`
LEFT JOIN countries ON items.category_id = countries.id
where items.id = 20
我试图在Laravel中像这样重现它
$defaultCountry = DB::table('items')
->leftJoin('countries', 'countries.id', '=', 'items.country_id')
->where('items.id', 20)
->select('items.*', 'countries.*')
->get();
但是当我执行它时我有错误
试图获得非对象的属性......第6行
第6行
{!! $defaultCountry->symbol !!}
符号是表defaultCountry
countries
的符号
当我var_dump($defaultCountry)
时,我发现所有数据都在变量中。为什么我会收到此错误?
答案 0 :(得分:1)
问题是您正在尝试访问集合上的对象变量,如果您只想获得一个寄存器,则可以get()
替换first()
:
$defaultCountry = DB::table('items')
->leftJoin('countries', 'countries.id', '=', 'items.country_id')
->where('items.id', 20)
->select('items.*', 'countries.*')
->first();
然后您可以访问变量,因为现在不是结果的集合。
如果您想要在视图中访问收藏数据,则应在刀片视图上使用一个foreach
或for
循环结果:
@foreach($defaultCountry as $country)
{!! $country->symbol !!}
@endforeach