Как получить табличные значения, которые имеют отношения один ко многим Zend Framework 1.12 & Doctrine - PullRequest
0 голосов
/ 01 сентября 2018

У меня есть настройки проекта с Zend 1.12 Framework и доктрины.

У меня есть две таблицы в моей базе данных, и я создал их с помощью следующих запросов:

create table `users` (
  `id` int unsigned not null auto_increment,
  `name` varchar(100) not null,
  primary key(`id`)
);

create table `phone_numbers` (
  `id` int unsigned not null auto_increment,
  `user_id` int unsigned not null,
  `phone_number` varchar(25) not null,
  index pn_user_index(`user_id`),
  foreign key (`user_id`) references users(`id`) on delete cascade,
  primary key(`id`)
);

Если вы заметили, что в этом запросе я использовал внешний ключ для идентификатора пользователя.

У меня в контроллере следующий код:

 $phoneNumberService = new PhoneNumberService();
$details = $phoneNumberService->findAll();

$this->view->userList = $details;

У меня есть следующий код в моем сервисе

 public function findAll() {
        return $this->_phoneNumberDao->findAll();
    }

У меня есть следующий код в моем DAO:

 /**
     * Method to find all data
     */
    public function findAll() {

        return parent::findAll();

    }

У меня есть две сущности: PhoneNumberEntity и UsersEntity

в файле просмотра у меня есть следующий код:

<?php foreach ($this->userList as $list): ?>
            <tr>
                <td><?php echo $list->getId(); ?></td>
                <td><?php echo $list->getdealComments(); ?></td>
                <td><?php echo $list->getphoneNumber(); ?></td>
            </tr>
<?php endforeach; ?>

Запрос - я хочу показать все записи в таблице phone_numbers на странице просмотра.

Ниже приведен код в файле PhoneNumberEntity:

<?php

/**
 * Entity for Phone number
 *
 * @author 
 */

/**
 * @Entity
 * @Table(name="phone_numbers") 
 * @HasLifecycleCallbacks  
 */
class PhoneNumberEntity {

    /**
     * This is the primary 
     * 
     * @Id 
     * @Column(type="integer", name="id")
     * @GeneratedValue(strategy="AUTO")     * 
     * @var integer 
     */
    private $id;

    /**
     * @ManyToOne(targetEntity="UsersEntity", fetch="LAZY", inversedBy="PhoneNumber")
     * @JoinColumn(name="user_id", referencedColumnName="id") 
     * 
     * @var integer
     */
    private $userId;

    /**
     * @Column(type="string", name="phone_number")
     * 
     * @var string 
     */
    private $phoneNumber;



    /**
     * Gets Id
     * 
     * @return integer 
     */
    function getId() {
        return $this->id;
    }

    /**
     * Gets userId
     * 
     * @return integer
     */
    function getUserId() {
        return $this->userId;
    }

    /**
     * Gets phone number
     * 
     * @return string 
     */
    function getPhoneNumber() {
        return $this->phoneNumber;
    }



    /**
     * Sets id
     * 
     * @param integer $id 
     */
    public function setId($id) {
        $this->id = $id;
    }

    /**
     * Sets id
     * 
     * @param integer $userId 
     */
    public function setUserId($userId) {
        $this->userId = $userId;
    }



    /**
     * Sets phone
     * 
     * @param string $phoneNumber 
     */
    function setPhoneNumber($phoneNumber) {
        $this->phoneNumber = $phoneNumber;
    }

}

Ниже приведен код в файле сущности пользователя:

<?php

/**
 * Entity for User
 *
 * @author 
 */

/**
 * @Entity
 * @Table(name="users") 
 * @HasLifecycleCallbacks  
 */
class UsersEntity {

    /**
     * This is the primary 
     * 
     * @Id 
     * @Column(type="integer", name="id")
     * @GeneratedValue(strategy="AUTO")     * 
     * 
     * @var integer 
     */
    private $id;

    /**
     * @Column(type="string", name="name")
     * 
     * 
     * 
     * @var string 
     */
    private $name;

    /**
     * @OneToMany(targetEntity="PhoneNumberEntity", mappedBy="user")
     * 
     * @var PhoneNumberEntity 
     */
    protected $dealComments;


    /**
     * Gets Id
     * 
     * @return integer 
     */
    function getId() {
        return $this->id;
    }

    /**
     * Gets name
     * 
     * @return string 
     */
    function getName() {
        return $this->name;
    }

    /**
     * Sets id
     * 
     * @param integer $id 
     */
    public function setId($id) {
        $this->id = $id;
    }

    /**
     * Sets name
     * 
     * @param string $name 
     */
    function setName($name) {
        $this->name = $name;
    }



}

Пожалуйста, уточните, как показать эти данные. Любая помощь очень ценится. Заранее спасибо. Любой, пожалуйста, помогите.

...