Şüphesiz, ben Yii::$app->db->createCommand($sql)->query()
, yapabilirim ama bu işi yapmak için ActiveRecord::find()->where($conditions)
kullanmak istiyorsam ne yapabilirim?'sormak' gibi soruyu nasıl oluşturabilirim? Yii 2 kullanarak kimliği% 2 = 1 'nerede?
cevap
Burada yii\db\Expression
kullanarak seçeneklerden biridir: düzeni ve bence daha okunabilir izlediğinden
use yii\db\Expression;
...
$models = Customer::find()
->select(['id', 'name', ...])
->where(new Expression('id % 2 = 1')])
->all();
Bunun definetely ham sql daha iyi ve ['%2=', 'id', 1]
bu. %2=
aslında örneğin not in
veya like
gibi bir operatör değildir, bu nedenle operatör, değer ve =
işareti tür karıştırılır çünkü
['%2=', 'id', 1]
Resmi belgeler:
Güncelleme: Ben samdark, resmi Gitter ana çerçeve ayağı olmuştur sohbet istedi ve dedi bu doğru yolu yii\db\Expression
kullanıyor.
ActiveQuery sınıfını where() kullanabilirsiniz, $conditions
('id % 2 = 1')
olacaktır.
Buraya neden "anahtar" gerekiyor? – arogachev
@arogachev gerekli değildir, bu bir örnektir ve kullanıcının '$ conditions' değişkenini kullanmayı tercih etmemesi durumunda sorgulamayı daha kolay hale getirir. Aslında – Zack
'$ terms' değişkenine nadiren ihtiyaç duyulmaktadır. Bunun yerine, '$ query' değişkenine sahip olabilir ve koşullu olarak sorgunun farklı bölümlerini ekleyebilirsiniz. – arogachev
Bunu da Etkin Sorguyu kullanarak yapabilirsiniz. Bu yardımcı olabilir.
$customers = Customer::find()
->select(['id', 'name', ...])
->where('id % 2 = 1')
->all();
veya
$customers = Customer::find()
->select(['id', 'name', ...])
->where(['% 2 =', 'id', 1])
->all();
.
oh, Yii, ilk elemanı 2 ve 3 arasında bir operatör olarak ele alır. – haoliang
@haoliang Resmi belgelerde [burada] belirtilmiştir (http://www.yiiframework.com/doc-2.0/yii-db-queryinterface.html#where%28%29-detail). – arogachev
Teşekkürler @arogachev Cevabınızı çok yararlı buluyorum. – ankitr
- 1. Yii 2 - radioList Şablonu
- 2. Yii 2 satıcı sorun
- 3. Yii 2 yükleme hatası
- 4. 1 = 2
- 5. Benim databae olarak yii 2
- 6. YII 2 Site URL'sini Al
- 7. Regex $ 1, $ 2, etc
- 8. awk '{print $ 2, ",", $ 1} "?
- 9. 1 + 1/2 + 1/3 + --- + 1/n =?
- 10. Yii 2 bilinmeyen özelliği alınıyor: yii \ web \ Görünüm :: nitelik
- 11. $ 1, $ 2, $ 3
- 12. Dönüş 1, 2, ..., 11.,
- 13. 2> & 1 PowerShell
- 14. Yii 2: aynı tabloyla çoklu ilişki
- 15. Moodle 2.x, kurs yedeklemelerini nerede saklıyor?
- 16. gün (Pazartesi = 1, Salı = 2)
- 17. Javascript'te, neden [1, 2] == [1, 2] veya ({a: 1}) == ({a: 1}) yanlıştır?
- 18. 2 boyutlu bir dinamik uzunluk dizisi nasıl oluşturabilirim?
- 19. Yii uygulamamın yii sürümünü nerede bulabilirim?
- 20. ASP.NET MVC 2 - Html.Form ayarının kimliği
- 21. Yii 1.x içinde geçişte model kullanılamıyor.
- 22. unix: 2. sütunları kullanarak 2 dosya birleştirme
- 23. Python'da "2 * 2" ile "2 ** 2" arasındaki fark nedir?
- 24. MySQL - DECIMAL (2, 2) içindeki 1 değeri 0.99 olarak çıkıyor.
- 25. Yii 1 - Bir php form
- 26. android.os.StrictMode örnekleri = 2; limit = 1
- 27. 2 Takvim gösterisi 1 Bildirim
- 28. BASH: Var = "test"? "1": "2" gibi koşullu değişkenleri destekliyor mu? "2"
- 29. WPF: 1 ciltlemede 2 dönüştürücü nasıl kullanılır?
- 30. Yii 2: Kartik ızgara görünümünde verileri toplu nasıl silebilirim?
Bir İfade nesnesi bir SQL deyimine veya parçasına gömüldüğünde, herhangi bir DB kaçış veya alıntı olmaksızın $ ifade özelliği değeri ile değiştirilir. şimdilik anlamını anlıyorum. – haoliang
ancak nesne (yeni İfade) bir dizide anahtar olamaz. şöyle çalışır: '-> (yeni İfade ('id% 2 = 1'))' – haoliang
Bu yolla, '' (yeni İfade ('id% 2 = 1') ',' 'ile aynı şekilde çalışır ('id% 2 = 1') '. lol – haoliang