Php Laravel-更新时在禁用更新

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(

在laravel 5上使用查询生成器进行更新时遇到问题。我已尝试在禁用更新的\u,但一直失败

这是我的密码:

    $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谢谢!感谢您提供了支持它的源代码