我想在laravel中创建lising和属性表之间的关系,因为我已经使用以下代码在它们之间建立了关系,但是在我看来,数据不是来自两个表。我遇到以下错误:
调用模型上未定义的关系[adListAttributes][App \ Models \ AdListing]。
此处列出的属性可以具有与和相关联的尽可能多的属性可以与许多列表相关
ad_listings:
id
title
name
date
ad_list_attributes table :
id
listing_id
name
namespace App\Models;
use Eloquent;
use Illuminate\Database\Eloquent\Model;
class AdListAttribute extends Model
{
protected $table = "ad_list_attributes";
public function Listings()
{
return $this->belongsToMany('AdListing', 'id', 'listing_id');
}
}
namespace App\Models;
use Eloquent;
use Illuminate\Database\Eloquent\Model;
class AdListing extends Model
{
protected $table = "ad_listings";
public function Attributes()
{
return $this->belongsToMany('AdListAttribute', 'listing_id', 'id');
}
}
问题是您未使用我认为正确的名称来调用关系
$listings = AdListing::with('Attributes')->get();
问题是您在两个模型中都使用belongsToMany
。这将引起问题。
在AdListAttribute
模型中,
public function Listings()
{
return $this->belongsTo('AdListing', 'id', 'listing_id');
}
在AdListing
模型中,
public function Attributes()
{
return $this->hasMany('AdListAttribute', 'listing_id', 'id');
}