Eski soruyu yazarak sonuç işleme kısaltabilir, biliyorum. Bununla birlikte, hiç kimse İfade sınıfından bahsetmiyor gibi görünüyor.
Verilen soru, sorunuzu çözemeyebilir çünkü sorunuzu, SQL'in Raw koşulunun nereye dahil edilmesi gerektiği konusunda belirsiz bırakıyor (SELECT ifadesinde veya WHERE ifadesinde mi?). Ancak, bu bilgi parçasını yararlı bulabilirsin.
Model dosyasında aşağıdaki sınıf ekleyin:
use Illuminate\Database\Query\Expression;
Sonra Modeli sınıfının içinde yeni değişken
protected $select_cols = [
'id', 'name', 'foo', 'bar',
Expression ('(select count(1) from sub_table where sub_table.x = top_table.x) as my_raw_col'), 'blah'
]
tanımlamak Ve bir kapsam ekleyin: dan Sonra
public function scopeMyFind ($builder, $id) {
return parent::find ($id, $this->select_cols);
}
senin kontrolörün veya mantıksal dosya, sadece ara:
Günün kutlu olsun.
(İşleri laravel çerçevesinde 5.5'te)
İfadenin bir seçim olması durumunda bir boolean döndürülür, select cümleleri için bir dizi ham sonuç almak için DB :: select kullanılır. – Lucia
DB :: deyimini, yalnızca herhangi bir sorgu çıktısı beklemediğinizde kullanmalısınız. – Fusion