显示 laravel 5.2 中的数组值

Displaying array values in laravel 5.2

我在 App\User.php 中有以下 hasMany() 关系,

public function partner_preference_occupation()
{
    return $this-hasMany('App\Models\User\PartnerPreferenceOccupation', 'user_id');

}

以下是我的PartnerPreferenceOccupation模型,

<?php

namespace App\Models\User;

use App\Models\BaseModel,
App\Models\ValidationTrait;

class PartnerPreferenceOccupation extends BaseModel {

use ValidationTrait;

public function __construct() {
    parent::__construct();

    $this->__validationConstruct();
}

/**
 * The database table used by the model.
 *
 * @var string
 */
protected $table = 'partner_preferences_occupation';  

protected $fillable = array('user_id', 'occupation_id');
protected $dates = array();
public $uploadPath = array();

protected function setRules() {

    $this->val_rules = array();
}

protected function setAttributes() {

    $this->val_attributes = array();
}

public function occupation_name() {
    return $this->belongsTo('App\Models\Master\OccupationModel', 'occupation_id');
    }

}

我想在我的视图中显示职业名称数组。我尝试了以下代码,但它失败了。

{{$obj->partner_preference_occupation ? $obj-partner_preference_occupation->occupation_name->name : null}}

错误如下,

Undefined property:Illuminate\Database\Eloquent\Collection::$occupation_name

如何提前显示them.Thanks

$obj-partner_preference_occupation->occupation_name->name

中有错别字

应该是$obj->partner_preference_occupation->occupation_name->name

确保集合中存在 occupation_name。您可以在视图中执行以下操作来检查:

dump( $obj->partner_preference_occupation );

它可能会帮助您确定问题所在。

另外,要将集合显示为数组,可以使用toArray()方法,例如:

$obj->partner_preference_occupation->toArray()

好的,我明白了, 因为它是要获取的值数组,所以我使用 foreach 将它们显示在我的视图中,

@if($occ=$obj->partner_preference_occupation->lists('occupation_name'))
@foreach($occ as $oc)
{{$oc->name}}
@endforeach
@endif

occupatoin_name 是我在模型中使用的关系名称。这对我有用:)