【问题标题】:Column Shows 'id' Number Instead of Foreign Key Attribute列显示“id”编号而不是外键属性
【发布时间】:2019-10-15 15:55:12
【问题描述】:

在 Laravel Backpack 中使用 select2 字段/列类型时,列表视图显示外部实体的“id”而不是所需的外键(在本例中为 Session 的“名称”)。

Laravel 5.8.4,背包 3.4。我在 GitHub 上询问,得到的答复是我的模型中的关系不正确。我认为这不是问题,因为名称会加载到编辑视图中。

GradeCrudController

        $this->crud->addColumn([
            'label' => "Session",
            'type' => 'select2',
            'name' => 'session_id', // the db column for the foreign key
            'entity' => 'session', // the method that defines the relationship in your Model
            'attribute' => 'name', // foreign key attribute that is shown to user
            'model' => "App\Models\Session" // foreign key model
        ]);

等级(型号)

    public function session()
    {
      return $this->belongsTo('App\Models\Session');
    }

会话(模型)

    public function grades()
    {
      return $this->hasMany('App\Models\Grade');
    }

【问题讨论】:

    标签: laravel laravel-backpack


    【解决方案1】:

    我看到您使用的是“select2”列类型。这不是 Backpack 默认提供的东西——它只有一个“选择”列。

    很可能发生的情况是 Backpack 加载了“text”列,因为它找不到“select2”列。因此,ID。

    尝试将“select2”更改为“select”。它应该在没有任何观察者/其他任何东西的情况下为您工作。

    【讨论】:

    • 这很有趣。文档中的这是什么?这不是 Backpack 提供的功能吗? laravel-backpack.readme.io/v3.0/docs/…
    • 在这里:backpackforlaravel.com/docs/3.6/crud-columns#select 注意这是一个 COLUMN 类型。您已链接到上面的 FIELD 类型。 Backpack 中的字段和列是不同的——列在 ListEntries 操作中使用,字段在 Create 和 Update 操作中使用。有些字段和列的名称相同(例如:select),但有些不是(例如:有一个 select2 字段,但没有 select2 列)。希望对您有所帮助!
    【解决方案2】:

    几天过去了,没有人回复,我想我会发布我想出的答案。请注意,我非常怀疑这是否是正确的解决方案,但对于我的项目来说它会做到。

    我为等级模型添加了Laravel Observer。用户添加新记录后,观察者会访问会话表,使用键提取会话名称并将其作为列添加到 Grades 表中。

    然后在背包中我只显示“名称”列。

    必须有比这更好的方法......但现在它会做。

    【讨论】:

      猜你喜欢
      • 2019-12-07
      • 1970-01-01
      • 2020-08-19
      • 2019-06-26
      • 1970-01-01
      • 2021-12-14
      • 2021-06-19
      • 2016-03-17
      • 1970-01-01
      相关资源
      最近更新 更多