Laravel Eloquent model update according to condition of field value null or existing(Laravel Eloquent 模型根据字段值为空或存在的条件更新)
                            本文介绍了Laravel Eloquent 模型根据字段值为空或存在的条件更新的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
                        
                        问题描述
我正在尝试像这样更新 Laravel Eloquent 模型.
I am trying to update Laravel Eloquent model like this.
Res_Reservations::where('time_id', $time['id'])
                ->where('date',  $bus['date'])
                ->where('valid',  config('config.TYPE_SCHEDULE_UNREMOVED'))
                ->where(function($query) use($time, $notesAdd) {
                    $query->whereNull('reason', function($query) use ($time, $notesAdd) {
                        return $query->update([
                            'time_id' => $time['move'],
                            'reason' => $notesAdd
                        ]);
                    })
                    ->orWhere('reason', '=', '', function($query) use ($time, $notesAdd) {
                        return $query->update([
                            'time_id' => $time['move'],
                            'reason' => $notesAdd
                        ]);
                    })
                    ->orWhere('reason', '<>', '', function($query) use ($time, $notesAdd) {
                        return $query->update([
                            'time_id' => $time['move'],
                            'reason' => DB::raw("CONCAT(reason, 
'" . $notesAdd . "')")
                        ]);
                    });
                });
但它不起作用.
也就是说,我想更新如下.
In other words, I want to update as below.
如果 'reason' 为 null 或空字符串
if 'reason' is null or emptystring
Res_Reservations::where('time_id', $time['id'])
                ->where('date',  $bus['date'])
                ->where('valid',  config('config.TYPE_SCHEDULE_UNREMOVED'))
                ->update([
                    'time_id' => $time['move'],
                    'reason' => $notesAdd
                ]);
否则
else
Res_Reservations::where('time_id', $time['id'])
                ->where('date',  $bus['date'])
                ->where('valid',  config('config.TYPE_SCHEDULE_UNREMOVED'))
                ->update([
                    'time_id' => $time['move'],
                    'reason' => DB::raw("CONCAT(reason, '
" . $notesAdd . "')")
                ]);
我的错误是什么?我怎样才能使陈述更简单?请告诉我~
What is my mistake? And how can I make statements simpler? Please let me know~
推荐答案
where函数回调中使用update函数错误
It is wrong to use update function inside the callback of where function
您必须在 2 个查询中执行此操作,例如:
You have to do it in 2 queries like:
Res_Reservations::where('time_id', $time['id'])
    ->where('date', $bus['date'])
    ->where('valid', config('config.TYPE_SCHEDULE_UNREMOVED'))
    ->where(function ($query
    {
        $query->where('reason', null)
            ->orWhere('reason', '');
    })
    ->update([
        'time_id' => $time['move'],
        'reason'  => $notesAdd,
    ]);
Res_Reservations::where('time_id', $time['id'])
    ->where('date', $bus['date'])
    ->where('valid', config('config.TYPE_SCHEDULE_UNREMOVED'))
    ->where('reason', '!=',  null)
    ->where('reason', '!=' '');
    ->update([
        'time_id' => $time['move'],
        'reason'  => DB::raw('CONCAT(reason, "
' . $notesAdd . '")'),
    ]);
                        这篇关于Laravel Eloquent 模型根据字段值为空或存在的条件更新的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
				 沃梦达教程
				
			本文标题为:Laravel Eloquent 模型根据字段值为空或存在的条件更新
				
        
 
            
        基础教程推荐
             猜你喜欢
        
	     - php 7.4 在写入变量中的 Twig 问题 2022-01-01
 - 主题化 Drupal 7 的 Ubercart “/cart"页 2021-01-01
 - php中的foreach复选框POST 2021-01-01
 - PHPUnit 的 Selenium 2 文档到底在哪里? 2022-01-01
 - 使用 scandir() 在目录中查找文件夹 (PHP) 2022-01-01
 - 如何在数学上评估像“2-1"这样的字符串?产生“1"? 2022-01-01
 - php中的PDF导出 2022-01-01
 - 将变量从树枝传递给 js 2022-01-01
 - Yii2 - 在运行时设置邮件传输参数 2022-01-01
 - Web 服务器如何处理请求? 2021-01-01
 
    	
    	
    	
    	
    	
    	
    	
    	
				
				
				
				