2015-12-08 3 views
0

Это одно из моих первых приложений из учебников, поэтому я не знаю, как хорошо выразить свою проблему.CakePHP как добавить данные из другого поля родственной модели

Ну у меня есть эти 2 таблицы:

User (id, code)

Hours (id, user_id, created)

Я хочу знать, как я могу добавить запись в таблицу Hours с помощью user_code.

Я попытался захватить данные User таблицы со значением code, а затем findBy и передать для patchEntity, но это не сработало.

+1

Не могли бы вы включить код для решения, которое у вас есть сейчас? –

ответ

0

У меня нет большого количества информации для работы, но я отдам ее.

Я хочу знать, как я могу добавить запись в таблицу Часы с использованием user_code

Вы упоминаете, используя patchEntity, так что обновление информации, которая уже есть. Предполагая, что user_code является столбец «код» вы говорите там, сначала найти пользователя по коду:

$users_tbl = TableRegistry::get('Users'); 
// find the user 
$user = $users_tbl->findByCode($user_code)->first(); 

if ($user) { 
    // replace '$this->request->data() with whatever patch data you wanted 
    $users_tbl->patchEntity($user, $this->request->data(), [ 
     'associated' => ['Hours'] 
    ] 

    if ($users_tbl->save($user)) { 
     // success! 
    } else { 
     // error! 
    } 
} else { 
    // error! 
} 

Это также будет зависеть от того, как у вас есть данные, которые вы прошли в (где мой «$ this-> request-> data(), или независимо от вашего массива) - он должен соответствовать именам правого столбца и находиться в правильном формате, указанном here.

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

$hours_tbl = TableRegistry::get('Hours'); 
$hours = $hours_tbl->newEntity([ 
    'user_id' => $user->id // $user populated from same method earlier 
]); 
/* assumed 'id' was autoincrementing and 'created' was populated 
    through Timestamp behavior */ 

if ($hours_tbl->save($hours)) { 
    // yay! 
} else { 
    // boo 
} 
Смежные вопросы