我正在使用Laravel 5.2,PHP 5.6和MySQL 5.7。
因此,我有一个表,该表包含两列名称相似的列:prp_preco_terceirizador
和prp_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
时,这些值才正确返回。
有人对此有解释吗?