首页 > 解决方案 > 无法在 Laravel 中的两个表之间建立关系

问题描述

我想在 laravel 中创建 lising 和属性表之间的关系,因为我使用以下代码来建立它们之间的关系,但我视图中的数据不是来自两个表。我收到以下错误:

调用模型 [App\Models\AdListing] 上的未定义关系 [adListAttributes]。

这里列表可以有尽可能多的属性关联,属性可以关联到许多列表

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');
        } 
    }

标签: laravellaravel-5eloquent

解决方案


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

AdListAttribute模型中,

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

AdListing模型中,

   public function adlisting_attributes()
    {
        return $this->hasMany('App\AdListAttribute', 'listing_id', 'id');
    } 

您可以使用以下方法获得结果,

 $response = AdListing::get();
 if($response->adlisting_attributes)
 {
   foreach($response->adlisting_attributes as $attribute)
   {
       echo $attribute->name;
   }
 }

推荐阅读