[英]laravel access level management (user permission array base on relations)
[英]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.