【问题标题】:Displaying array values in laravel 5.2在 laravel 5.2 中显示数组值
【发布时间】:2017-02-09 12:02:24
【问题描述】:

我在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

如何显示它们。在此先感谢。

【问题讨论】:

    标签: arrays laravel-5.2 has-many


    【解决方案1】:

    $obj-partner_preference_occupation-&gt;occupation_name-&gt;name有错别字

    应该是$obj-&gt;partner_preference_occupation-&gt;occupation_name-&gt;name

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

    dump( $obj->partner_preference_occupation );
    

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

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

    $obj->partner_preference_occupation->toArray()
    

    【讨论】:

    • 感谢 Niraj,当我使用时,dump($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 => array:5 [ ▼ "id" => 37 "user_id" => 93 "occupation_id" => 9 "created_at" => null "updated_at" => null ] ] 如何分别获取每个职业id的名字
    • 我明白了。这意味着您在 occupation_idoccupation 表之间没有关系。您应该首先在模型中创建此关系。
    • 但是我已经在我的 App\User public function partner_preference_occupation() { return $this->hasMany('App\Models\User\PartnerPreferenceOccupation', 'user_id');并在我的模型中定义如下关系, public functionoccupation_name() { return $this->belongsTo('App\Models\Master\OccupationModel', 'occupation_id'); }
    • 请查看我在问题中发布的模型。
    • 当你做dump( $obj-&gt;partner_preference_occupation-&gt;occupation_name ):时会发生这种情况?
    【解决方案2】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-06-24
      • 2016-04-18
      • 2017-02-17
      • 2016-08-29
      • 2018-10-02
      • 1970-01-01
      • 2016-12-10
      相关资源
      最近更新 更多