【问题标题】:twig not retrieving a username from a controller?树枝没有从控制器中检索用户名?
【发布时间】:2017-11-04 12:09:51
【问题描述】:

我只看到一个用户 id 与我的 todo 相关联,它应该提取一个用户名,因为 todo 与用户相关联,可能是我的控制器没有提取正确的信息,或者它可能是其他东西,这是使用 slim顺便说一句雄辩。

task.user_id.username 不起作用,task.user_id 确实显示与用户关联的号码。

tod​​os 树枝

{% 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]);

}

【问题讨论】:

  • 不应该是task.username而不是task.user_id.username吗?现在,您正在尝试从整数中获取用户名。
  • @MagnusEriksson 是的,但那行不通。

标签: php eloquent slim


【解决方案1】:

在这里查看其他一些帖子后,我将代码更改为此

我必须将我的模型类与 user_id 相匹配,因为它属于两个类,而不仅仅是一个。

用户.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');
    }
}

任务.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 %}

【讨论】:

    猜你喜欢
    • 2021-08-10
    • 1970-01-01
    • 2023-03-17
    • 1970-01-01
    • 1970-01-01
    • 2014-05-31
    • 1970-01-01
    • 1970-01-01
    • 2023-03-17
    相关资源
    最近更新 更多