如何在 blade 中获得 属性 关系
How to get property on relation in blade
当我尝试访问视图内 hasOne 关系中的 属性 时,我的视图中出现以下错误,我是否不允许从视图中执行此操作,基本上是我想要实现的是对我可以与列表模型相关的属性进行动态 select。
Undefined property: Illuminate\Database\Eloquent\Relations\HasOne::$name (View: C:\wamp64\www\grupoeverest\resources\views\admin\listing\property.blade.php)
属性输入型号
class PropertyType extends Model
{
protected $table = "property_types";
protected $fillable= ['name'];
public function property()
{
return $this->belongsTo('App\Property');
}
}
属性 型号
class Property extends Model
{
protected $table="properties";
protected $fillable=['value'];
public function propertyType(){
return $this->hasOne('App\PropertyType');
}
public function listing(){
return $this->belongsTo('App\Listing');
}
}
上市模式
class Listing extends Model
{
protected $table="listings";
protected $fillable=['name','price','squaremeters','number',
'street','neighbourhood','description','description',
'zipcode','longitude','latitude',
'listing_type_id','operation_type_id' ];
public function listingType(){
return $this->hasOne('App\ListingType', 'id');
}
public function pictures(){
return $this->hasMany('App\Picture', 'listing_id');
}
public function properties(){
return $this->hasMany('App\Property', 'listing_id');
}
}
控制器动作
public function properties($id)
{
return view('admin.listing.property',[
'listing' => Listing::find($id),
'types' => ListingType::all(),
]);
}
查看
<div class="row">
<div class="col-md-6">
<h4>here
</h4>
@foreach($listing->properties as $property)
<h4> {{$property->value}}{{$property->propertyType()->name}}
</h4>
@endforeach
</div>
应该是$property->propertyType->name
我的问题已通过将 属性Type 方法 属性 更改为 hasMany 和 属性 方法 属性Type 更改为 belongsTo 并在我看来使用 Abdullah 提供的答案来解决,这确实更有意义。
例如
protected $table = 'states';
public function City() {
return $this->hasMany(City::class);
}
}
public function Farm() {
return $this->belongsTo('App\Models\Farm','farm_id','id');
}
当我尝试访问视图内 hasOne 关系中的 属性 时,我的视图中出现以下错误,我是否不允许从视图中执行此操作,基本上是我想要实现的是对我可以与列表模型相关的属性进行动态 select。
Undefined property: Illuminate\Database\Eloquent\Relations\HasOne::$name (View: C:\wamp64\www\grupoeverest\resources\views\admin\listing\property.blade.php)
属性输入型号
class PropertyType extends Model
{
protected $table = "property_types";
protected $fillable= ['name'];
public function property()
{
return $this->belongsTo('App\Property');
}
}
属性 型号
class Property extends Model
{
protected $table="properties";
protected $fillable=['value'];
public function propertyType(){
return $this->hasOne('App\PropertyType');
}
public function listing(){
return $this->belongsTo('App\Listing');
}
}
上市模式
class Listing extends Model
{
protected $table="listings";
protected $fillable=['name','price','squaremeters','number',
'street','neighbourhood','description','description',
'zipcode','longitude','latitude',
'listing_type_id','operation_type_id' ];
public function listingType(){
return $this->hasOne('App\ListingType', 'id');
}
public function pictures(){
return $this->hasMany('App\Picture', 'listing_id');
}
public function properties(){
return $this->hasMany('App\Property', 'listing_id');
}
}
控制器动作
public function properties($id)
{
return view('admin.listing.property',[
'listing' => Listing::find($id),
'types' => ListingType::all(),
]);
}
查看
<div class="row">
<div class="col-md-6">
<h4>here
</h4>
@foreach($listing->properties as $property)
<h4> {{$property->value}}{{$property->propertyType()->name}}
</h4>
@endforeach
</div>
应该是$property->propertyType->name
我的问题已通过将 属性Type 方法 属性 更改为 hasMany 和 属性 方法 属性Type 更改为 belongsTo 并在我看来使用 Abdullah 提供的答案来解决,这确实更有意义。
例如
protected $table = 'states';
public function City() {
return $this->hasMany(City::class);
}
}
public function Farm() {
return $this->belongsTo('App\Models\Farm','farm_id','id');
}