Získání uživatele podle ID DIBI

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
shifi
Člen | 6
+
0
-

Ahoj,

potřebuji podle id uživatele získat jméno uživatele z druhé tabulky. Používám dibi a netusím jak to udělat.

public function renderM03($family, $segment, $status) {
    $result = \dibi::select('*')->from('as_items');
    if (isset($family)) {
        $result->where("category = $family");
    }
    if (isset($segment)) {
        $result->where("segment = $segment");
    }
    if ($status == 1) {
        $result->where("status = 1");
    }
    $this->template->items = $result;
}

V latte takto:

{foreach $items as $item}
    <tr class="COL_NORMAL_3">
        <td>{$item->id}</td>
        <td>{$item->name}</td>
        <td>{$item->category->buyer}</td>>
    </tr>
{/foreach}

V druhé tabulce v sloupci buyer již mám text jen nevím jak ho propsat sem :)

Děkuji.

Felix
Nette Core | 1247
+
-1
-

V tomhle by ti mohl pomoci jeden z balicku z Nette a to nette/database.

Mrkni do dokumentace, primo tvuj priklad je vcelku ukazkovy. Pred cizi klic v jedne tabulce, se dostanes k datum v druhe tabulce.

shifi
Člen | 6
+
0
-

Ahoj,

jenomže DIBI mi neumožňuje

$item->category->buyer

Vypisuje se jako prázdné políčko. Když udělám

$book->ref('author', 'translator_id')->name

napíše mi to Call to undefined method Dibi\Row::ref().

Zkoušel jsem vše a netuším co s tím :(

Felix
Nette Core | 1247
+
0
-

Mas dobre definovane cizi klice? Muzes ukazat schema tech 2 tabulek?

David Matějka
Moderator | 6445
+
0
-

@shifi jak sam pises, dibi to neumoznuje. musis bud pouzit joiny nebo nejaky dalsi dotaz.

shifi
Člen | 6
+
0
-

A jde to nějak udělat aby to bylo rychlé a přehledné?

kalatalabnik
Člen | 35
+
+1
-

Čau, co takto?

\dibi::select('i.*')
		->select('c.name')->as('customer_name')
		->from('as_items')->as('i')
		->join('as_customers')->as('c')
		->on('i.customer = c.id');

A ve výpise pak:

{foreach $items as $item}
...
	<td>{$item->customer_name}</td>
...
{/foreach}

Ještě si teda budeš muset doopravit ty WHERE podmínky.