比较多种关系的简单方法? Laravel 5.3

时间:2016-12-02 02:25:08

标签: php mysql laravel-5 eloquent pivot

我有一组看起来像这样的关系:

Schema

除了您在那里看到的数据透视表外,用户和代理商还会在其中存储大量数据。

我想做的是找到符合当前登录个人偏好的代理商或用户,无论他们是代理商还是用户。

这是一个直接比较,所以没什么特别的。但老实说,我不知道如何编写雄辩的查询来解释数据透视表。有人能指出我正确的方向吗?

我正在看这样的事情,这是可以理解的失败:

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

0 个答案:

没有答案