2017-11-04 4 views
0

사용자 아이디가 내 todos와 만 연관되어 있다는 것을 알았습니다. todo가 사용자와 연관되어있는 사용자 이름을 가져와야합니다. 아마도 내 컨트롤러가 올바른 정보를 가져 오지 않았거나 다른 것이었을 것입니다. 이것은 슬림하고 그런데 웅변하다.나뭇 가지가 컨트롤러에서 사용자 이름을 검색하지 않습니까?

task.user_id.username 그냥 작동하지 않습니다 task.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

여기에 다른 게시물을보고 한 후 수행 할 작업 컨트롤러 하나뿐 아니라 두 클래스 모두에 속합니다.

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 %}