Laravel Eloquent没有返回连接表

时间:2017-08-14 23:41:55

标签: php laravel laravel-5

我有以下功能加入2个模型。

$listing = Game::where('status', '2')->whereHas('transaction', function ($query) use($id) {
    $query->where('status',1)->where('transaction_id', Crypt::decrypt($id));
})->get();

我有一个游戏模型,其代码如下。

protected $table = 'game_listings';
protected $primaryKey = 'id';
protected $fillable = ['user_id','asset_id','trade_id','market_name','name','picture','description','price','status','clicks'];
protected $dates = ['deleted_at'];

/*
|--------------------------------------------------------------------------
| RELATIONS
|--------------------------------------------------------------------------
*/
public function user()
{
    return $this->belongsTo('App\Models\User');
}

public function transaction()
{
     return $this->hasOne('App\Models\GameTransaction','listing_id','id');
}

我还有一个 GameTransaction 模型,其中包含以下代码。

protected $table = 'game_transactions';
protected $primaryKey = 'id';
protected $fillable = ['listing_id', 'transaction_id', 'payee_id'];
protected $dates = ['deleted_at'];

我遇到的问题是$listing变量只返回game_listings表中的数据,而只返回game_transactions表中的数据。

1 个答案:

答案 0 :(得分:3)

whereHas不会加载关系。您应该使用with。尝试:

   Game::where('status', '2')->whereHas('transaction', function ($query) use($id) {
    $query->where('status',1)->where('transaction_id', Crypt::decrypt($id));
})->with('transaction')->get()