2017-02-09 5 views
0

У меня есть следующие hasMany() отношения в App\User.php,Отображение значений массива в Laravel 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

Хорошо я получил его, Как это массив значений будет неправдоподобным, я использовал Еогеасп чтобы отобразить их на мой взгляд, как,

@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

Спасибо Niraj, когда я использовал, свалка ($ obj-> partner_preference_occupation) Я получил как этот массив: 2 [▼ 0 => массив: 5 [▼ "ID" = > 36 "user_id" => 93 "оккупация" => 19 "created_at" => "2017-02-09 12:12:17" "updated_at" => "2017-02-09 12:12: 17" ] 1 => массив: 5 [▼ "ID" => 37 "идентификатор_пользователя" => 93 "occupation_id" => 9 "created_at" => нулевой "updated_at" => нулевой ] ] Как я могу получить имя каждого оккупанта, соответственно – Rose

+0

Я вижу. Это означает, что у вас нет отношения между «оккупацией» и «занятием». Вы должны начать с создания этого отношения в своей модели. –

+0

Но я написал код ниже в моей App \ User public function partner_preference_occupation() { return $ this-> hasMany ('App \ Models \ User \ PartnerPreferenceOccupation', 'user_id'); } и определил отношения в моей модели следующим образом: public function activity_name() { return $ this-> принадлежит ('App \ Models \ Master \ OccupationModel', 'occupation_id'); } – Rose