Propojení jedné tabulku (uživatel – uživatel)
- arrow
- Člen | 4
Zdravím,
mám vztah ošetřující-pacient a chci, aby ošetřující viděl všechny
data pacienta a mohl s nimi manipulovat. Aktuálně jsou oba uživatelé ve
stejné tabulce, na kterou je navázána vazební tabulka, jenž obsahuje ID
obou uživatelů ze společné tabulky user
.
patients_keeper: id_patient, id_keeper
<?php
$id_keeper = $this->user->id;
$patient = $this->database->table('patients_keeper');
$id_patient = $patient->where('id_keeper', $id_keeper)->select('id_patient');
$this->template->currentUser = $id_patient;
?>
Nevím, jestli je možná takováto relace v nette, ale když se pokouším
získat ID pacienta, vypisuje to chybu:
Cannot read an undeclared property Nette\Database\Table\Selection::$username,
v případě, že vybírám rovnou uživatelovo přihlašovací jméno a
chybu:
Object of class Nette\Database\Table\Selection could not be converted to string,
v případě, že chci vypsat celou proměnnou currentUser.
Nevidíte v tom chybu nebo nějaký jiný způsob, jak se „přepnout“ na pacienta a tak mu manipulovat s daty?
Předem díky za odpověď.
- David Matějka
- Moderator | 6445
tva promenna $id_patient
obsahuje Selection, coz je nejaka
kolekce radku. Pokud chces vybrat vsechny pacienty, ktere ma dany osetrujici,
zkus tohle:
$patients = $this->database->table('user')->where(':patients_keeper(patient).id_keeper', $id_keeper);
v te promenne pak budes mit Selection s jednotlivymi pacienty.
- arrow
- Člen | 4
Chci, aby vztah mezi pacientem a ošetřujícím byl 1:1
(rekurzivní/unární vztah).
Teď je to M:N díky mezitabulce patients_keeper, která obsahuje dvě ID
(atributy ‚id_patient‘, ‚id_keeper‘) z tabulky ‚user‘.
Zkoušela jsem vložit cizí klíč do tabulky ‚user‘, který by ukazoval na
ID jiného uživatele z té stejné tabulky ‚user‘, ale to mi bohužel
neumožnil adminer – nejde vložit cizí klíč do stejné tabulky. Proto
bych se chtěla zeptat, zda je vůbec možné vytvořit rekurzivní/unární
vztah, aby tabulka měla vazbu sama na sebe ve formě cizího klíče?
Případně dělám něco špatně? Mockrát děkuju.