所以通常我只能用箭头来获取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呢?
答案 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;
}
中的主键