Php Laravel-更新时在禁用更新
在laravel 5上使用查询生成器进行更新时遇到问题。我已尝试在禁用更新的\u,但一直失败 这是我的密码:Php Laravel-更新时在禁用更新,php,laravel,laravel-4,laravel-5,Php,Laravel,Laravel 4,Laravel 5,在laravel 5上使用查询生成器进行更新时遇到问题。我已尝试在禁用更新的\u,但一直失败 这是我的密码: $query = StockLog::where('stock_id', $id)->whereBetween('created_at', $from, $to])->update(['batch_id' => $max + 1]); 我试过两种方法: 在我的模型中,我设置了第一个: public function setUpdatedAtAttribute(
$query = StockLog::where('stock_id', $id)->whereBetween('created_at', $from, $to])->update(['batch_id' => $max + 1]);
我试过两种方法:
在我的模型中,我设置了第一个:
public function setUpdatedAtAttribute($value)
{
/*do nothing*/
}
第二个:
$stocklog = new StockLog;
$stocklog->timestamps = false;
$query = $stocklog::where('stock_id', $id)->whereBetween('created_at', [$from, $to])->update([
'batch_id' => $max + 1]);
他们都失败了。是否仍要禁用更新的_
提前感谢如果您想永久使用,您可以使用以下内容 将以下内容添加到您的模型中
public $timestamps = false;
如果您想继续使用created_at,请添加以下内容
static::creating( function ($model) {
$model->setCreatedAt($model->freshTimestamp());
});
或者用下面的方法
/**
* Set the value of the "updated at" attribute.
*
* @param mixed $value
* @return void
*/
public function setUpdatedAt($value)
{
$this->{static::UPDATED_AT} = $value;
}
默认情况下,Eloquent将自动维护数据库表上创建的和更新的列。只需将这些时间戳列添加到您的表中,Eloquent就会处理其余的内容
我真的不建议删除它们。但是如果你想用下面的方法
将以下内容添加到您的型号中:
public $timestamps = false;
这将禁用时间戳
编辑:看起来您希望在字段保留创建的,您可以覆盖模型中的GetUpdateDataColumn
使用以下代码:
public function getUpdatedAtColumn() {
return null;
}
在模型中,添加以下方法:
/**
* @param mixed $value
* @return $this
*/
public function setUpdatedAt($value)
{
return $this;
}
更新:在Laravel 5.5中:
public $timestamps = false;
请尝试在您的模型中使用此选项:
const CREATED_AT = null;
const UPDATED_AT = null;
在这种情况下,最好使用查询生成器而不是雄辩,因为查询生成器不会隐式编辑时间戳字段。使用查询生成器的优点是只针对相关的更新操作,而不改变所有模型
在一行中,您可以做到:
$query = \DB::table('stocklogs')->where('stock_id', $id)->whereBetween('created_at', [$from, $to])->update(['batch_id' => $max + 1]);
被接受的答案对我不起作用,但却引导我朝着正确的方向找到了这个解决方案:
class Whatever extends Model {
//...
const UPDATED_AT=NULL;
//...
Laravel 5.3是否永久关闭?或者只是为了一个特定的查询?嗨。永久关闭@移位交换和当您说“两个都失败了”-实际的失败/错误是什么?未找到列:1054“字段列表”中的“更新位置”未知列@移位交换如果您根本不想拥有它,那么最好不要在迁移中使用它。如果您使用的是迁移,那么可能会有类似于$table->timestamps()的内容代码>您可以做的是设置此public$timestamps=false
在您的模型中,在手动创建的广告中,我已经尝试了第一个和第二个。首先,它给了我很多红色语法。特别是在静态::创建第二个不起作用。它仍在尝试更新“updated_at”检查是否有阻止时间戳的方法。我需要为其他查询创建at。哎哟!!这是成功~。非常感谢。我相信这是对这个问题最好的回答。从源代码:如果(!is_null(static::UPDATED_AT)&&&…{$this->setUpdatedAt($time);}
@andonovn谢谢!感谢您提供了支持它的源代码