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 | 1270
+
-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 | 1270
+
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.