2017-11-04 1 views
0

私は自分のtodosに関連付けられたユーザーIDだけを見ています。これは、todoがユーザーと関連しているというユーザー名を取得する必要があります。おそらくそのマイコントローラーは適切な情報を引き出しません。ところで雄弁。twigはコントローラからユーザ名を取得していませんか?

task.user_id.usernametask.user_idは、ユーザーに関連付けられている番号を表示していません。

ドス小枝

{% extends "templates/layout.html" %} 

{% block content %} 
<h1>My Todos</h1> 

<ol> 
    {% for task in tasks %} 
     <div id="task{{task.id}}" class="myl" ng-controller="myCtrl"> 
     <li><h4>{{ task.task}}</h4></li> 
     <small style="font-style:italic">{{task.created_at |date("m/d/Y")}}</small></br> 
     <small style="font-style:italic">{{task.user_id.username}}</small></br> 




    <button id="disappear" name="task" class="btn btn-sm btn-danger" ng-click="deleteTask({{task.id}})">Delete</button> 



     </div> 
    {% endfor %} 

</ol> 
{% endblock %} 

私はのためのuser_idと私のモデルクラスを一致させる必要があった。この

に私のコードを変更し

public function getTodos($request, $response, $args) 
{ 


    $tasks = Task::with('user')->get(); 

    return $this->c->view->render($response, 'todos.twig', ['tasks' => $tasks]); 

} 
+0

のようなユーザー名を参照することができますここから

<?php namespace App\Models; // use Slim\Views\Twig as View; // use Interop\Container\ContainerInterface; use Illuminate\Database\Eloquent\Model; class Task extends Model { protected $table = 'tasks'; protected $fillable = ['task', 'user_id']; public $timestamps = []; public function user() { return $this->belongsTo('App\Models\User', 'user_id'); } } 

と'task.user_id.username'ではなく?今、整数からユーザー名を取得しようとしています。 –

+0

@ MagnusErikssonええ、それは動作しませんでした。 – BARNOWL

答えて

0

ここにいくつかの他の記事を見た後ドスコントローラ1つではなく、両方のクラスに属します。

User.php

<?php 

namespace App\Models; 


use Illuminate\Database\Eloquent\Model; 


class User extends Model 
{ 
    protected $table = 'users'; 
    protected $primaryKey = 'user_id'; 
    protected $fillable = ['username', 'password']; 
    public $timestamps = []; 


    public function tasks() 
    { 
     return $this->hasMany('App\Models\Task', 'user_id'); 
    } 
} 

Task.php私はそれが `task.username`すべきではないので、

{% extends "templates/layout.html" %} 

{% block content %} 
<h1>My Todos</h1> 

<ol> 
    {% for task in tasks %} 
     <div id="task{{task.id}}" class="myl" ng-controller="myCtrl"> 
     <li><h4>{{ task.task}}</h4></li> 
     <small style="font-style:italic">{{task.created_at |date("m/d/Y")}}</small></br> 


     <small style="font-style:italic"> 
      {{ task.user.username}} 

     </small> 


     </br> 




    <button id="disappear" name="task" class="btn btn-sm btn-danger" ng-click="deleteTask({{task.id}})">Delete</button> 



     </div> 
    {% endfor %} 

</ol> 
{% endblock %} 
関連する問題