2014-11-23 5 views
2

В документации точно говорит, что связанные с ним данные могут быть сохранены как:Сохранение Связанных данных в CakePHP 3 контроллера

use App\Model\Entity\Article; 
use App\Model\Entity\User; 

$article = new Article(['title' => 'First post']); 
$article->user = new User(['id' => 1, 'username' => 'mark']); 

$articles = TableRegistry::get('Articles'); 
$articles->save($article); 

Я попробовал это в моем коде, но я получаю ошибку:

Fatal Error Ошибки: Class 'App \ Controller \ TableRegistry' не найден
Файл /Users/mtkocak/Sites/gscrm/src/Controller/BusinessesController.php Line: 62

Вот мой код контроллера. Я сомневаюсь, что выше код действителен для моделей сущностей.

public function add() { 
    $business = $this->Businesses->newEntity($this->request->data); 
    $record = new Record($this->request->data['Records']); 

    $address = new Address($this->request->data['Addresses']); 
    $telephone = new Telephone($this->request->data['Telephones']); 
    $email = new Email($this->request->data['Emails']); 

    $record->business = $business; 
    $record->address = $address; 
    $record->email = $email; 

    if ($this->request->is('post')) { 
     var_dump($this->request->data['Records']); 
     $records = TableRegistry::get('Records'); 
     $records->save($record); 
     // if ($this->Businesses->save($business)) { 
     //  $this->Flash->success('The business has been saved.'); 
     //  return $this->redirect(['action' => 'index']); 
     // } else { 
     //  $this->Flash->error('The business could not be saved. Please, try again.'); 
     // } 
    } 
    $telephonetypes = $this->Businesses->Records->Telephones->Telephonetypes->find('list'); 
    $records = $this->Businesses->Records->find('list'); 
    $businesstypes = $this->Businesses->Businesstypes->find('list'); 
    $this->set(compact('telephonetypes','business', 'records', 'businesstypes')); 
} 

Вот мой SQL дамп таблицы:

CREATE TABLE IF NOT EXISTS `businesses` (
    `id` int(10) unsigned NOT NULL, 
    `record_id` int(10) unsigned DEFAULT NULL, 
    `businesstype_id` int(10) unsigned DEFAULT NULL 
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_turkish_ci AUTO_INCREMENT=1 ; 

ALTER TABLE `businesses` 
ADD PRIMARY KEY (`id`), ADD KEY `FK_businesses_records` (`record_id`), ADD KEY `FK_businesses_businesstypes` (`businesstype_id`); 

Любая помощь приветствуется.

ответ

7

Вам не хватает заявления use. Все эти примеры в книге считают само собой разумеющимся, что вы начали читать раздел таблицы с самого начала и использовать:

http://book.cakephp.org/3.0/en/orm/table-objects.html#getting-instances-of-a-table-class

use Cake\ORM\TableRegistry; 

пс. Вы не должны строить объекты вручную, когда после именования

+0

У меня есть "использовать" заявление, и я все еще получая ошибку. См. [Этот вопрос] (http://stackoverflow.com/questions/34157865/why-am-i-getting-tableregistry-not-found-in-cakephp-3-0). –

Смежные вопросы