Bir varlık sırasından öğe almanın uygun yolu nedir?


9

Drupal 8'de entityqueue için API örnekleri bulmakta sorun yaşıyordum.

Öğeleri almak için bir sorgu yazdım.

$query = $this->database->select('entity_subqueue__items', 'esi')
  ->fields('esi', array('items_target_id'))
  ->condition('esi.bundle', $name_of_queue)
  ->orderBy('delta', 'ASC');

$nids = $query->execute()->fetchCol();

Ama mümkünse yerleşik bir işlev kullanmak istiyorum. Bir varlık kuyruğundan öğe alma işlevi nerede?


D7 ile aynı - \ Drupal :: kuyruk ('kuyruğum') -> iddiaItem ()

Bunun aynı olduğunu düşünmüyorum. DatabaseQueue nesnesini kullanan bir tablo kuyruğu var. Bu entityqueue modülüdür. Ben örnek denedim ve işe yaramaz ve kodu kazma, DatabaseQueue nesnesi entity_subqueue__items tablosunda eksik olan "name" gibi sütunları olan bir tabloya bakıyor gibi görünüyor.
oknate

Ah üzgünüm, entityqueue modülünü kullanmıyorum.

Yanıtlar:


12

Subqueue kimliğiniz $ sid verildiğinde:

$entity_subqueue = \Drupal::entityManager()->getStorage('entity_subqueue')->load($sid);

Subqueue nesnesini yükler. Varlık sıranızı almak veya güncellemek için bunu değiştirebilirsiniz.

Ürünleri almak için:

$items = $entity_subqueue->get('items')->getValue();

Öğeleri güncellemek için, $ items dizisine başka bir öğe ekleyin ve varlık nesnesini kaydedin:

$items[] = ['target_id' => 69];

$entity_subqueue->set('items', $items);

$entity_subqueue->save();

İşte bu kadar!

Veritabanında varlık kuyruğunuzun güncellendiğini kontrol edebilirsiniz:

select * from entity_subqueue__items where bundle = :sid;

Ayrıca Drupal 8: Config Pages modülünde entityqueue kullanmak için harika bir alternatif olduğunu eklemek istiyorum . Yalnızca bir varlığı olan varlık paketleri oluşturmanıza olanak tanır. Daha sonra varlık referans alanları da dahil olmak üzere istediğiniz herhangi bir alan türünü ekleyebilirsiniz. Kısa bir süre önce, bir projedeki varlık sırasını varlık başvuru alanı olan yapılandırma sayfasıyla değiştirdim ve kullanıcı deneyimini tercih ettim.


0

Ayrıca alt sorguyu yüklemek için bir kısayol vardır: \Drupal\entityqueue\Entity\EntitySubqueue::load($sid);

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.