>

나는 Drupal 8을 처음 사용합니다. 제 경우에는 데이터베이스에서 모든 기사를 이름으로 필터링하여 돔 코드를 작성했지만 작동하지 않습니다. 누구든지 나를 도울 수 있습니까?

public function getArticles(){
    $database = \Drupal::database();
    $query = $database->select('node', 'nd','article');
    return $query;
  }

업데이트 :

<?php
namespace Drupal\mymodule;

class ServiceValues{
 
  public function getArticles(){
    $storage = \Drupal::service('entity_type.manager')->getStorage('node');
    $my_entity_ids = $storage->getQuery()
      ->condition('type', 'article')
      ->condition('status', 1)
      ->execute();
    $my_entities = $storage->loadMultiple($my_entity_ids);
    return $my_entities;
  }
}


  • 답변 # 1

    엔터티 저장소를 사용하려고합니다.

    $storage = \Drupal::service('entity_type.manager')->getStorage('node');
    
    

    엔티티를 조회하는 두 가지 주요 방법이 있습니다.

    <올>

    엔티티 스토리지의 getQuery () 메소드 사용

    $my_entity_ids = $storage->getQuery()
      ->condition('type', 'article')
      ->condition('status', 1)
      ->execute();
    $my_entities = $storage->loadMultiple($my_entity_ids);
    
    

    entity_storage의 loadByProperties () 메소드 사용

    $my_entities = $storage->loadByProperties([
      'type' => 'article',
      'status' => 1,
    ]);
    
    

    어느 쪽이든 완벽하게 허용되며 상황에 맞는 것을 사용하십시오.

    또한 일종의 클래스 에서이 작업을 수행하는 것처럼 보이기 때문에 Dependency Injection을 사용하여entity_type.manager서비스. 이것은 관련 게시물에 잘 설명되어 있습니다. 다른 서비스에 서비스를 주입하는 방법?

  • 이전 drupal - 첫 페이지 제목이/node에서 변경된 경우 어떻게 변경합니까?
  • 다음 drupal - 서비스에서 호출 할 때 데이터가 표시되지 않음