Laravel 5.4 hasManyThrough

时间:2017-07-23 15:06:09

标签: php laravel laravel-5.4

有人可以解释一下hasManyThrough如何与我试图实现的sql语句相关联吗?

 --offers table
    id, network_id, mobile_id

--networks table
    id, name

--mobiles table
   id, name

我想通过('networks')

获取Mobile ::

我会把它写成

SELECT DISTINCT networks.name from networks, offers where offers.network_id = networks.id and offers.mobile_id in (1,2,3,4)

关于上面的sql语句,每个arg在hasManyThrough方法中的位置是什么?即

hasManyThrough(Network::class,Offer::class,'network_id','mobile_id')

1 个答案:

答案 0 :(得分:0)

我认为这是多对多的关系

 --offers table
    id, network_id, mobile_id

--networks table
    id, name

--mobiles table
   id, name

网络模型

namespace App;

use Illuminate\Database\Eloquent\Model;

class Network extends Model
{
    public function mobile(){ 
        return $this->belongsToMany('App\Mobile', 'offers')->withPivot('mobile_id');
    }    
}

移动模型

namespace App;

use Illuminate\Database\Eloquent\Model;

class Mobile extends Model
{
    public function network(){ 
        return $this->belongsToMany('App\Network', 'offers')->withPivot('network_id');
    }    
}

您可以使用pivot来获取关系 有关详细信息,请访问Laravel Docs

但是对于这种情况,您必须使用数据透视表,即mobile_network而不是商品。