【问题标题】:Laravel Text doesn't show True/False, but 0/1Laravel Text 不显示真/假,而是 0/1
【发布时间】:2020-01-16 15:52:07
【问题描述】:

在 MySQL 数据库中,我使用 tinyint(1),因此 validate 字段将是 0 或 1。 如何在下面编辑此推力以使其能够显示 True 或 False 而不是 0 或 1?

namespace App\Thrust;

use BadChoice\Thrust\Resource;
use BadChoice\Thrust\Fields\Link;
use BadChoice\Thrust\Fields\Text;
use BadChoice\Thrust\Fields\Email;
use BadChoice\Thrust\Fields\Gravatar;

class Requester extends Resource
{
    public static $model        = \App\Requester::class;
    public static $search       = ['name', 'email'];
    public static $defaultSort  = 'tickets_count';
    public static $defaultOrder = 'DESC';
public function fields()
    {
        return [
            Text::make('validate', 'Validate'),
        ];
    }
}

【问题讨论】:

    标签: php laravel


    【解决方案1】:

    您正在寻找的功能称为Type Casting。

    类型转换的意义是将变量的值与 不同的数据类型。换句话说,类型转换是一种利用 数据类型变量分为不同的数据类型。 Source

    例子

    $response = 1;
    
    var_dump($response); // Output: int(1)
    var_dump((bool)$response); // Output: bool(true)
    

    另一个例子可能是,当您构建一个函数并使用它时,您将获得1/0 值,如果您想将其作为boolean 类型返回,您可以在其中执行此操作。例如:

    public function isValid((string) $query): boolean
    {
        $result = some_check($query);
        return (boolean) $result;
    }
    

    其他可能的数据类型转换是:

    (int), (integer) - cast to integer
    (bool), (boolean) - cast to boolean
    (float), (double), (real) - cast to float
    (string) - cast to string
    (array) - cast to array
    (object) - cast to object
    

    【讨论】:

    • 我尝试使用Text::make((boolean) 'ic_validate', 'Validate'),但该字段现在为空
    • @zy 你应该在Text 之前使用(boolean),比如(boolean)Text::make('validate', 'Validate'),
    • 我也尝试过,但无法正常工作。 'validate' 是用 0/1 填充的列。 “验证”是列的名称。是不是因为是表列所以不能直接(布尔)赋值给变量?
    【解决方案2】:

    您可以在显示之前转换为布尔值 https://laravel.com/docs/6.x/eloquent-mutators#attribute-casting

    【讨论】:

      猜你喜欢
      • 2016-06-12
      • 2011-09-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多