Laravel 5.2雄辩地混合了相似的列名

时间:2018-11-26 18:44:32

标签: php mysql laravel

我正在使用Laravel 5.2,PHP 5.6和MySQL 5.7。

因此,我有一个表,该表包含两列名称相似的列:prp_preco_terceirizadorprp_preco_terceirizador2

这是该表的模型文件:

class ProdutoPreco extends Model
{
    use SoftDeletes;

    protected $table = 'produto_preco';
    protected $primaryKey = 'produto_preco_id';
    public static $eagerLoadClass = [];

    const CREATED_AT = 'cadastrado';
    const UPDATED_AT = 'atualizado';
    const DELETED_AT = 'excluido';

    public function produtoVariacao()
    {
        return $this->belongsTo('App\ProdutoVariacao');
    }

    public function getPrpPrecoTerceirizadorAttribute($value)
    {
        if (Auth::check()) {
            $cliente = Auth::user()->userable()->first();
            if ($cliente->cli_desconto_maximo == 'S' && 
                (!is_null($this->prp_preco_terceirizador2))) {
                return $this->prp_preco_terceirizador2;
            }
        }
        return $value;
    }

    public function getPrpCodPrecoTerceirizadorAttribute($value)
    {
        if (Auth::check()) {
            $cliente = Auth::user()->userable()->first();
            if ($cliente->cli_desconto_maximo == 'S' &&
                (!is_null($this->prp_cod_preco_terceirizador2))) {
                return $this->prp_cod_preco_terceirizador2;
            }
        }
        return $value;
    }
}

produto_preco的表结构:

DROP TABLE IF EXISTS `produto_preco`;
CREATE TABLE `produto_preco`  (
  `produto_preco_id` int(11) NOT NULL AUTO_INCREMENT,
  `produto_id` int(11) NULL DEFAULT NULL,
  `produto_variacao_id` int(11) NULL DEFAULT NULL,
  `prp_qtd` int(11) NOT NULL DEFAULT 0,
  `prp_preco` decimal(10, 2) NOT NULL DEFAULT 0.00,
  `prp_cod_preco` int(11) NULL DEFAULT NULL,
  `prp_preco_terceirizador` decimal(10, 2) NOT NULL DEFAULT 0.00,
  `prp_cod_preco_terceirizador` int(11) NULL DEFAULT NULL,
  `prp_preco_terceirizador2` decimal(10, 2) NULL DEFAULT NULL,
  `prp_cod_preco_terceirizador2` int(11) NULL DEFAULT NULL,
  `excluido` datetime(0) NULL DEFAULT NULL,
  `cadastrado` timestamp(0) NULL DEFAULT CURRENT_TIMESTAMP,
  `atualizado` timestamp(0) NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP(0),
  `prp_preco_OLD` varchar(255) CHARACTER SET latin1 COLLATE latin1_swedish_ci NULL DEFAULT NULL,
  PRIMARY KEY (`produto_preco_id`) USING BTREE,
  INDEX `idx_1`(`excluido`) USING BTREE,
  INDEX `idx_2`(`excluido`, `produto_variacao_id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 8592 CHARACTER SET = latin1 COLLATE = latin1_swedish_ci ROW_FORMAT = Compact;

一切正常,但是,当我运行它时:

$aux = ProdutoPreco::find(123)

如果我转储返回的对象,则值是正确的,但是这两行都向我返回了prp_preco_terceirizador2的值:

$aux->prp_preco_terceirizador2

$aux->prp_preco_terceirizador

我将prp_preco_terceirizador2更改为prp_preco_terceirizador_max,并且print_r显示了正确的值,但是各个对象的属性仍然返回相同的值。仅当我将prp_preco_terceirizador更改为prp_preco_terceirizador_min时,这些值才正确返回。

有人对此有解释吗?

0 个答案:

没有答案