簡體   English   中英

Laravel - 訪問關系數組

[英]Laravel - Access to relations array

我嘗試訪問關系數組但我收到錯誤。

這是我的競選模型:

class Campagne extends Model
{
    protected $table = 'Campagne';

    /**
     * The primary key for the model.
     * 
     * @var string
     */
    protected $primaryKey = 'Id';


    public $incrementing = false;


    public function Annonceur()
    {
        return $this->belongsTo('App\Annonceur', 'Annonceur');
    }

}

在我的數據庫中,我有很好的外鍵,在我的調試欄中我有這個對象:

0 => Campagne {#574 ▼
  #table: "Campagne"
  #attributes: array:12 [▼
    "Id" => 7
    "Nom" => "ORANGE"
    "DateDebut" => null
    "DateFin" => null
    "Annonceur" => 25
    "Service" => 25
    "Description" => null
    "Active" => null
    "Visible" => 1
    "CommerceMaj" => null
    "created_at" => "2019-04-27 15:00:43"
    "updated_at" => "2019-04-27 15:00:43"
  ]
  #relations: array:1 [▼
    "Annonceur" => Annonceur {#610 ▼
      #table: "Annonceur"
      #primaryKey: "Id"
      #fillable: array:12 [▶]
      #connection: "mysql"
      #keyType: "int"
      +incrementing: true
      #with: []
      #withCount: []
      #perPage: 15
      +exists: true
      +wasRecentlyCreated: false
      #attributes: array:17 [▶]
      #original: array:17 [▶]
      #changes: []
      #casts: []
      #dates: []
      #dateFormat: null
      #appends: []
      #dispatchesEvents: []
      #observables: []
      #relations: []
      #touches: []
      +timestamps: true
      #hidden: []
      #visible: []
      #guarded: array:1 [▶]
    }
  ]

}

我必須訪問“Annonceur”關系屬性,但我嘗試時出錯:

$campagne->Annonceur->Name例如。

謝謝

您使用定義的關系

return $this->belongsTo('App\\Annonceur', 'Annonceur');

被稱為Many to Many關系。

這意味着,你告訴Laravel你的campagne有很多Annonceur 當你訪問一個結果$campagne->Annonceur它返回一個集合(為簡單起見讓我們的東西它是一個數組)的Annonceur ,而不是單個實例Annonceur 所以,你可以使用for循環遍歷所有Annonceur ,如下所示:

foreach($campagne->Annonceur as $annonceur){
  dd($annonceur->Name);
}

或者只訪問您可以訪問的第一個annonceur ,如下所示:

$campagne->Annonceur->first()->Name;

如果將關系更改one to one意味着使用

$this->hasOne('App\\Annonceur', 'Id', 'Annonceur');

那么你可以訪問如下: $campagne->Annonceur->Name; 如果您定義的關系是正確的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM