为什么没有getAttributes()我无法获取味精ID

时间:2019-07-15 08:30:26

标签: laravel eloquent

所以通常我只能用箭头来获取foreach数据...但是当我使用它时,它仅返回ID的第一个索引。

代码在这里:

  

型号

class log_sms_deliver extends Model
{
    protected $fillable = [
        'msgid', 'code', 'status', 'date_deliver'
    ];
    public $timestamps = true;
    protected $primaryKey = 'msgid';
}
  

迁移

Schema::create('log_sms_delivers', function (Blueprint $table) {
    $table->string('msgid')->primary();
    $table->integer('code');
    $table->string('status');
    $table->string('date_deliver');
    $table->timestamps();
});
  

在处理命令上

$logsmsdelivers = log_sms_deliver::where('status', '!=' , 'DELIVER')->get();
foreach($logsmsdelivers as $k => $logdeliver){
    echo $k.' '.$logdeliver->msgid." ".$logdeliver->status." ||||| ";
}

但它返回

0 2147483647无效的SMS ID ||||| 1 2147483647失败||||| 2 2147483647失败||||| 3 2147483647失败||||| 4 2147483647队列|||||

应该是

0 2147483647无效的SMS ID ||||| 1 9415363824失败||||| 2 9415364207失败||||| 3 9416372525失败||||| 4 9417388935队列|||||

我可以将$ logdeliver-> msgid更改为$ logdeliver-> getAttributes()[“ msgid”]

但是为什么只有msgid必须使用getAttribute但不使用status呢?

1 个答案:

答案 0 :(得分:1)

  

Eloquent假定主键是一个递增的整数值,这意味着默认情况下,主键将自动转换为int

您有一个包含主键的$fillable属性,所以我假设您设置了自己的主键。如果是这种情况,请关闭模型中的自动递增:

class log_sms_deliver extends Model
{
    protected $fillable = [
        'msgid', 'code', 'status', 'date_deliver'
    ];
    public $timestamps = true;
    protected $primaryKey = 'msgid';
    // don't auto increment primary keys
    public $incrementing = false;
}

请参见Defining Models

中的主键