我有一组看起来像这样的关系:
除了您在那里看到的数据透视表外,用户和代理商还会在其中存储大量数据。
我想做的是找到符合当前登录个人偏好的代理商或用户,无论他们是代理商还是用户。
这是一个直接比较,所以没什么特别的。但老实说,我不知道如何编写雄辩的查询来解释数据透视表。有人能指出我正确的方向吗?
我正在看这样的事情,这是可以理解的失败:
$loggedinagency = Auth::user()->id;
$match_user_agency = User::with('work_prefs')
->where('work_prefs', 'like',
Agency::find($loggedinagency)->work_prefs)
->get();
编辑:关系声明如下:
用户:
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class User extends Model {
protected $table = 'users';
public function work_prefs() {
return $this->belongsToMany('App\Work_Prefs', 'preference_user', 'user_id', 'preference_id');
}
}
机构:
<?php
namespace App;
class Agency extends Authenticatable
{
use Notifiable;
protected $table='agencies';
public function work_prefs() {
return $this->belongsToMany('App\Work_Prefs', 'agency_preference', 'agency_id', 'preference_id');
}
}
工作偏好:
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Work_Prefs extends Model
{
protected $table = 'work_prefs';
public function user() {
return $this->belongsToMany('App\User', 'preference_user', 'preference_id', 'user_id');
}
public function agency() {
return $this->belongsToMany('App\Agency', 'agency_preference', 'preference_id', 'agency_id');
}
}