无法在Laravel中建立两个表之间的关系

问题描述 投票:0回答:2

我想在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');
        } 
    }
laravel laravel-5 eloquent
2个回答
0
投票

问题是您未使用我认为正确的名称来调用关系

$listings = AdListing::with('Attributes')->get();

0
投票

问题是您在两个模型中都使用belongsToMany。这将引起问题。

AdListAttribute模型中,

    public function Listings()
    {
        return $this->belongsTo('AdListing', 'id', 'listing_id');
    } 

AdListing模型中,

   public function Attributes()
    {
        return $this->hasMany('AdListAttribute', 'listing_id', 'id');
    } 
© www.soinside.com 2019 - 2024. All rights reserved.