【问题标题】:Laravel - display name instead of idLaravel - 显示名称而不是 id
【发布时间】:2021-08-26 17:56:49
【问题描述】:

需要帮助,如何显示驱动程序的名称而不是 id?我有更多的表,但如果有人可以帮助我,我会更高兴,表显示 ID 1、2、3 的编号......我试图改变模型,我正在学习 php 和lavarel 仍然这部分对我来说不清楚。谢谢帮忙

注册模型;

class register extends Model
{
    use SoftDeletes;

    use HasFactory;

    public $table = 'registers';
    
    protected $dates = ['deleted_at'];

    public $fillable = [
        'driver_id',
        'inOut',
        'plates',
        'carrier_id',
        'tractorNumber',
        'process_id',
        'location_id',
        'customer',
        'drayage_id',
        'containertype_id',
        'containerstatus_id',
        'containerPlate',
        'containerNumber',
        'comments'
    ];

    /**
     * The attributes that should be casted to native types.
     *
     * @var array
     */
    protected $casts = [
        'id' => 'integer',
        'driver_id' => 'integer',
        'inOut' => 'string',
        'plates' => 'string',
        'carrier_id' => 'integer',
        'tractorNumber' => 'string',
        'process_id' => 'integer',
        'location_id' => 'integer',
        'customer' => 'string',
        'drayage_id' => 'integer',
        'containertype_id' => 'integer',
        'containerstatus_id' => 'integer',
        'containerPlate' => 'string',
        'containerNumber' => 'string',
        'comments' => 'string'
    ];

    /**
     * Validation rules
     *
     * @var array
     */
    public static $rules = [
        'driver_id' => 'required',
        'inOut' => 'required',
        'carrier_id' => 'required',
        'process_id' => 'required',
        'location_id' => 'required',
        'drayage_id' => 'required',
        'containertype_id' => 'required',
        'containerstatus_id' => 'required'
    ];

}

驱动器型号

class driver extends Model
{
    use SoftDeletes;

    use HasFactory;

    public $table = 'drivers';
    

    protected $dates = ['deleted_at'];



    public $fillable = [
        'driverName',
        'licence'
    ];

    /**
     * The attributes that should be casted to native types.
     *
     * @var array
     */
    protected $casts = [
        'id' => 'integer',
        'driverName' => 'string',
        'licence' => 'string'
    ];

    /**
     * Validation rules
     *
     * @var array
     */
    public static $rules = [
        'driverName' => 'required',
        'licence' => 'required'
    ];
    
}

  @foreach($registers as $register)
            <tr>
                <td>{{ $register->driver_id }}</td>
            <td>{{ $register->inOut }}</td>
            <td>{{ $register->plates }}</td>
            <td>{{ $register->carrier_id }}</td>
            <td>{{ $register->tractorNumber }}</td>

【问题讨论】:

  • 您是否在RegisterDriver 之间建立了关系?如果你这样做了,你可以做$register-&gt;driver-&gt;name。如果你没有,那么你要么需要这样做,要么手动join() 他们,然后通过$register-&gt;driver_name 显示。你没有展示你是如何定义$registers的,所以edit你的问题要包括在内。此外,型号名称是 StudlyCaseRegisterDriver,而不是 registerdriverlaravel.com/docs/8.x/eloquent-relationships供参考

标签: php html laravel eloquent relationship


【解决方案1】:

如果驱动程序和注册模型之间存在关系,您可以在注册模型类中编写该关系。

public function driver()
{
    return $this->belongsTo(driver::class, 'driver_id');
}

然后就可以通过输入获取驱动名称了,

@foreach($registers as $register)
            <tr>
                <td>{{ $register->driver->driverName}}</td>
                <td>{{ $register->inOut }}</td>
                <td>{{ $register->plates }}</td>
                <td>{{ $register->carrier_id }}</td>
                <td>{{ $register->tractorNumber }}</td>
           </tr>
 @endforeach()

【讨论】:

  • 对不起!这只是一个错误!但即使我们也使用驱动程序(复数)而不是驱动程序(单数),它仍然有效。
  • 是的,这只是一个命名约定;功能是相同的,但最好使用正确的复数形式来表示名称所代表的含义。代码可读性很重要 ? 当我查看代码并看到与变量/返回类型不匹配的复数形式时,我会将其标记为修复,就像我对不起作用的代码一样。
  • 谢谢!!!这解决了我的问题!我在驱动程序模型中添加代码
猜你喜欢
  • 2021-12-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-03-06
相关资源
最近更新 更多