twig 没有从控制器中检索用户名?
twig not retrieving a username from a controller?
我只看到一个用户 ID 与我的待办事项相关联,它应该提取一个用户名,因为待办事项与用户相关联,可能是我的控制器没有提取正确的信息,或者可能是其他原因,这是顺便说一下,使用 slim 和 eloquent。
task.user_id.username
不起作用只是 task.user_id
显示与用户关联的号码。
todos 树枝
{% 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 %}
待办事项控制器
public function getTodos($request, $response, $args)
{
$tasks = Task::with('user')->get();
return $this->c->view->render($response, 'todos.twig', ['tasks' => $tasks]);
}
看了这里的一些其他帖子后,我将代码更改为这个
我必须将我的模型 类 与 user_id 匹配,因为属于两个 类 而不仅仅是一个。
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
<?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');
}
}
从这里我可以像这样引用用户名
{% 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 %}
我只看到一个用户 ID 与我的待办事项相关联,它应该提取一个用户名,因为待办事项与用户相关联,可能是我的控制器没有提取正确的信息,或者可能是其他原因,这是顺便说一下,使用 slim 和 eloquent。
task.user_id.username
不起作用只是 task.user_id
显示与用户关联的号码。
todos 树枝
{% 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 %}
待办事项控制器
public function getTodos($request, $response, $args)
{
$tasks = Task::with('user')->get();
return $this->c->view->render($response, 'todos.twig', ['tasks' => $tasks]);
}
看了这里的一些其他帖子后,我将代码更改为这个
我必须将我的模型 类 与 user_id 匹配,因为属于两个 类 而不仅仅是一个。
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
<?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');
}
}
从这里我可以像这样引用用户名
{% 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 %}