2015-03-05 5 views
6

केकफ़्पी 3.0 में किसी घटक के अंदर मॉडल कैसे लोड करें? (CakePHP 2 में) इससे पहले कि आपकेकफ़्पी 3.0 - घटक के अंदर लोड मॉडल

$Model = ClassRegistry::init($modelName); 
$Model->create(false); 
$saved = $Model->save($data); 

इस्तेमाल कर सकते हैं क्या है कि 3.0 में के बराबर?

+3

मैं ऐसे बुनियादी सामान http://book.cakephp.org/3.0/en/orm के लिए पहले किए गए दस्तावेज़ों से परामर्श करने के सुझाव देंगे निम्नलिखित की तरह है ...। एचटीएमएल – ndm

उत्तर

20

जैसा कि पहले बताया, आप एक मॉडल का उपयोग करने के TableRegistry उपयोग कर सकते हैं:

use Cake\ORM\TableRegistry; 
$this->Articles = TableRegistry::get('Articles'); 

See here for documentation.

6

जैसा कि किसी ने टिप्पणियों में कहा था, आपको कम से कम migration guide को समझना चाहिए कि 3.0 के साथ अंतर क्या है। अपने विशिष्ट प्रश्न के समाधान के लिए, अब आप उपयोग कर सकते हैं TableRegistry:

$table = TableRegistry::get($tableName); 
1

एक को एक्सेस करना घटक का नियंत्रक

एक घटक के भीतर से आप वर्तमान सी तक पहुंच सकते हैं ontroller रजिस्ट्री के माध्यम से:

$controller = $this->_registry->getController(); 
के लिए और अधिक कृपया इस लिंक को पढ़ने

: आप loadModel जो एक संपत्ति के रूप में नियंत्रक करने के लिए उदाहरण कहते हैं उपयोग करने के लिए जोर देते हैं, तो http://book.cakephp.org/3.0/en/controllers/components.html

1

तो है कि तुम कैसे करते है।

class ArticleComponent extends Component 
{ 
    public function initialize(array $config) 
    { 
     $this->controler = $this->_registry->getController(); 
    } 

    public function myFunction($id) 
    { 
     $this->controller->loadModel('Articles'); 
     $article = $this->controller->Articles->get($id); 

     debug($article); 
    } 
} 

इस तरह नियंत्रक बता आप के लिए एक मॉडल को खोलने के लिए की तरह है:

$ लेख = $ component-> controller-> UserModel;

लेकिन जब आप सीधे TableRegistry का उपयोग कर मॉडल को कॉल कर सकते हैं तो कॉलर नियंत्रक का बिंदु आपके लिए मॉडल कहने के लिए क्या है।

$ लेख = $ घटक-> उपयोगकर्ता मॉडल;

कहानी loadModel() को इतना छोटा के लिए TableRegistry

2

एक बात एक आवरण है कि मेरे द्वारा की गई घटक में एक loadModel वर्ग का निर्माण करने की है। यह मेरा कोड सुसंगत रखता है।

namespace App\Controller\Component; 

use Cake\Controller\Component; 
use Cake\ORM\TableRegistry; 

class MyComponent extends Component { 

    public function initialize(array $config) { 
     parent::initialize($config); 
     $this->loadModel('Users'); 
    } 

    private function loadModel($model) { 
     $this->$model = TableRegistry::get($model); 
    } 
} 
0

मेरा उत्तर अन्य उत्तरों के समान है। लेकिन, मैं घटक के अंदर रिकॉर्ड को बचाने की कोशिश करता हूं।

इस मामले में, कोड

use Cake\ORM\TableRegistry; 
--- 
$model = TableRegistry::get('MyModeles'); 
$entity = $model->newEntity(); 
$entity->set('filed1', 'newValue'); 
.... 
$model->save($entity); 
संबंधित मुद्दे