ubah kueri mentah dengan subkueri menjadi fasih

Saya memiliki kueri yang berfungsi berikut dengan subkueri yang berfungsi dengan baik. Saya ingin bertransformasi ke Eloquent karena saya ingin mempertahankan hubungan lain dari model Pengguna saya

select * from (
select p.from, a.account_id, count(*) as num
from accounts as a
inner join accounts_prop as p on (a.account_id = p.account_id)
group by p.account_id 
having num = 1 ) query

where year(query.von) = 2017

Saya sudah memiliki model Pengguna yang diwakili oleh (accounts tabel) dan model Properti yang diwakili oleh (properites tabel)

User -> Property hubungannya satu lawan banyak

Pengguna

public function properties()
{
   return $this->hasMany('App\Property', 'account_id', 'account_id');
}

Properti

  public function user()
    {
       return $this->belongsTo('App\User', 'account_id');
    }

Outputnya harus mengembalikan semua pengguna yang memiliki satu Properti dan properti yang cocok dengan tanggal saat ini.

Dalam permintaan mentah saya untuk tujuan pengujian, saya menggunakan tahun konstan


person fefe    schedule 28.07.2017    source sumber
comment
Silakan posting struktur tabel Anda dan posting hasil kueri yang Anda harapkan.   -  person NikuNj Rathod    schedule 28.07.2017


Jawaban (1)


Sebenarnya sepertinya berfungsi seperti itu

User::whereHas('properties', function($query){

            $query = $query->where('von', '=', Carbon::now()->format('Y-m-d'))
                           ->havingRaw('count(account_id) = 1')
                           ->with('department');

        })->get();
person fefe    schedule 30.07.2017