2017-02-09 113 views
0

,我有以下hasMany()关系App\User.php显示数组值5.2

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。

回答

0

确定我得到它, 由于它是值的阵列需要抓取,我使用的foreach在我的视图来显示它们,

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

occupatoin_name是我的关系,我在我的模型中使用的名称。这为我工作:)

0

有一个在$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() 
+0

感谢尼拉吉,当我用,转储($ obj-> partner_preference_occupation)我有这样的 数组:2▼ 0 =>数组:5▼ “ID”= > 36 “user_id”=> 93 “occupation_id”=> 19 “created_at”=>“2017-02-09 12:12:17” “updated_at”=>“2017-02-09 12:12: 17" ] 1 =>数组:5 [▼ “ID”=> 37 “USER_ID”=> 93 “occupation_id”=> 9 “created_at”=>空 “的updated_at”=>空 ] ] 我怎样才能得到每个职业编号的名字分别为 – Rose

+0

我明白了。这意味着你在'occupation_id'和'occup'表之间没有关系。你应该从模型中创建这个关系开始。 –

+0

但是我在应用程序\用户 中写了下面的代码public function partner_preference_occupation() { return $ this-> hasMany('App \ Models \ User \ PartnerPreferenceOccupation','user_id'); } 并在我的模型中定义了如下关系: public function occupation_name(){ return $ this-> belongsTo('App \ Models \ Master \ OccupationModel','occupation_id'); } – Rose