2012-03-03 34 views
6

Tôi tạo các mục nhập như vậy trong DOctrine. Tôi đang cố thêm giỏ vào trang. Đây là thực thể của tôi: Đối tượng của tôi:Học thuyết 2 - lỗi liên tục - Cảnh báo: spl_object_hash() hy vọng tham số 1 là đối tượng, null cho

<?php 

namespace App\Entity; 
use Doctrine\Common\Collections\ArrayCollection; 
/** 
* @Entity(repositoryClass="App\Repository\Page") 
* @Table(name="page") 

*/ 
class Page 
{ 
    /** 
    * @Id @Column(type="integer", name="p_id") 
    * @GeneratedValue 
    */ 
    private $p_id; 
    /** @Column(type="string", name="p_title") */ 
    private $p_title; 
    /** @Column(type="datetime", name="p_created") */ 
    private $p_created_at; 
    /** @Column(type="datetime", name="p_updated_at") */ 
    private $p_updated_at; 
    /** @Column(type="text", name="p_abstract") */ 
    private $p_abstract; 
    /** @Column(type="text", name="p_fulltext", nullable=false) */ 
    private $p_fulltext; 
    /** @Column(type="string", name="p_author", nullable=true) */ 
    private $p_author; 
    /** @Column(type="string", name="p_url",nullable=true) */ 
    private $p_url; 
    /** @Column(type="string", name="p_meta_title",nullable=true) */ 
    private $p_meta_title; 
    /** @Column(type="string", name="p_meta_keywords",nullable=true) */ 
    private $p_meta_keywords; 
    /** @Column(type="string", name="p_meta_description",nullable=true) */ 
    private $p_meta_description; 
     /** @Column(type="string", name="p_status") */ 
    private $p_status; 
    /** @Column(type="string", name="p_weight") */ 
    private $p_weight; 
    /** 
    * @ManyToOne(targetEntity="User", inversedBy="pages") 
    * @JoinColumn(name="p_u_id", referencedColumnName="u_id") 
    */ 
    private $user; 

    /** 
    * @OneToMany(targetEntity="App\Entity\Page\Basket", mappedBy="page", cascade={"persist", "remove"}) 
    */ 
    protected $pageBaskets; 


    public function __construct() 
    { 
     $this->pageBaskets = new ArrayCollection(); 
     $this->pageMedia = new ArrayCollection(); 
    } 
    public function __get($property) 
    { 
     return $this->property; 
    } 
    public function __set($property,$value) 
    { 
     $this->$property = $value; 
    } 
    public function getPageMedia() 
    { 
     return $this->pageMedia; 
    } 
    public function setUser(\App\Entity\User $user) 
    { 
     $this->user = $user; 
    } 
    public function getMedias() 
    { 
     return $this->pageMedia; 
    } 
    public function getPageBaskets() 
    { 
     return $this->pageBaskets; 
    } 
    /** 
    * Set Page Values 
    * @var array $values 
    */ 
    public function setPageProperties(array $values) 
    { 
     $this->p_updated_at = new \DateTime("now"); 
     $this->p_title = $values['p_title']; 
     $this->p_abstract = $values['p_abstract']; 
     $this->p_meta_title = $values['p_meta_title']; 
     $this->p_meta_keywords = $values['p_meta_keywords']; 
     $this->p_meta_description = $values['p_meta_description']; 
     $this->p_url = $values['p_url']; 
     $this->p_fulltext = $values['p_abstract']; 
     $this->p_author = ''; 
     $this->p_status = 1; 

    } 
    public function getSimpleValues() 
    { 
     return array(
      'p_updated_at' => $this->p_updated_at, 
      'p_title' => $this->p_title, 
      'p_abstract' => $this->p_abstract, 
      'p_meta_title' => $this->p_meta_title, 
      'p_meta_keywords' => $this->p_meta_keywords, 
      'p_meta_description' => $this->p_meta_description, 
      'p_url' => $this->p_url, 
      'p_fulltext' => $this->p_fulltext, 
      'p_author' => $this->p_author 
     ); 
    } 
} 

?> 


<?php 
namespace App\Entity\Page; 
use Doctrine\Common\Collections\ArrayCollection; 

/** 
* @Entity 
* @Table(name="page_basket") 

*/ 
class Basket 
{ 
    /** 
    * @Id @Column(type="integer", name="pb_id") 
    * @GeneratedValue 
    */ 
    private $pb_id; 
    /** 
    * @ManyToOne(targetEntity="Entity\Page",) 
    * @JoinColumn(name="pb_id", referencedColumnName="p_id") 
    */ 
    private $page; 


    public function __construct() 
    { 

    } 
    public function __get($property) 
    { 
     return $this->property; 
    } 
    public function __set($property,$value) 
    { 
     $this->$property = $value; 
    } 
    public function setPage($page) 
    { 
     $this->page = $oszpage; 
    } 
} 

?> 

Nhưng nơi đang làm công cụ như:

$page->getPageBaskets()->add($basket); 

Im nhận: Cảnh báo: spl_object_hash() dự kiến ​​tham số 1 là đối tượng, null cho

Tôi đang làm gì sai?

+0

Có cùng một vấn đề [ở đây] (http://stackoverflow.com/questions/21780016/spl-object-hash-expects-parameter-1-to-be-object-null-given) ngoại trừ việc tôi đã nhận được lỗi khi tôi cố gắng lấy thực thể chính! Bạn có tìm thấy giải pháp cho vấn đề của mình không? –

Trả lời

1

Tốt nhất để làm theo các ví dụ trong sách hướng dẫn cho đến khi bạn cảm thấy thoải mái hơn. Thả phép thuật _ get/ _set phương thức. D2 dựa vào việc chặn các cuộc gọi phương thức để làm công cụ của nó. Xử lý các bộ sưu tập mảng như mảng và xây dựng các phương thức cụ thể để tương tác với các thực thể của bạn.

Cụ thể:

public function addPageBasket($pageBasket) 
{ 
    $this->pageBaskets[] = $pageBasket; 
} 
... 
$page->addPageBasket($pageBasket); 

PS. Đối với câu hỏi cụ thể của bạn, rất có thể $ basket không phải là một đối tượng.

+1

Điều này không hiệu quả đối với tôi và tôi thậm chí không sử dụng các phương thức nhận và đặt ma thuật. Tôi vẫn gặp lỗi tương tự –

Các vấn đề liên quan