有人可以解释一下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')
答案 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而不是商品。