即使记录存在,Laravel也会返回空集合

时间:2018-01-18 10:27:26

标签: php laravel

以下是Model类

namespace App\Models\BaseModels;
use Illuminate\Database\Eloquent\SoftDeletes;
use Illuminate\Database\Eloquent\Model;

class BallByBall extends Model
{
    use SoftDeletes;
    protected $table = 'ball_data';
    protected $primaryKey = 'trans_id';
    protected $guarded = [];
    protected $dates = ['deleted_at'];
}

ball_data的架构是:

CREATE TABLE `ball_data` (
  `trans_id` int(10) NOT NULL AUTO_INCREMENT,
  `tour_id` int(11) DEFAULT NULL,
  `m_trans_id` int(11) DEFAULT NULL,
  `match_id` int(11) DEFAULT NULL,
  `team_id1` int(11) DEFAULT NULL,
  `team_id2` int(11) DEFAULT NULL,
  `innings` int(11) DEFAULT NULL,
  `batsman_id` int(11) DEFAULT NULL,
  `batsman_id2` int(11) DEFAULT NULL,
  `bowler_id` int(11) DEFAULT NULL,
  `fielder_id` int(11) DEFAULT NULL,
  `batsman_score` int(11) DEFAULT NULL,
  `bowler_given` int(11) DEFAULT NULL,
  `extra_runs` int(11) DEFAULT NULL,
  `total_runs` int(11) DEFAULT NULL,
  `team_runs` int(11) DEFAULT NULL,
  `for_wicket` int(11) DEFAULT NULL,
  `ball_no` int(11) DEFAULT NULL,
  `ball_type_id` int(11) DEFAULT NULL,
  `ball_type` varchar(573) DEFAULT NULL,
  `over_no` double DEFAULT NULL,
  `maiden` int(11) DEFAULT NULL,
  `wicket_id` int(11) DEFAULT NULL,
  `wicket_type` varchar(573) DEFAULT NULL,
  `wicket_desc` varchar(573) DEFAULT NULL,
  `ball_length_id` int(11) DEFAULT NULL,
  `ball_area_id` int(11) DEFAULT NULL,
  `field_type_id` int(11) DEFAULT NULL,
  `power_play` int(11) DEFAULT NULL,
  `remark` varchar(573) DEFAULT NULL,
  `commentry` varchar(573) DEFAULT NULL,
  `deleted_by` int(11) DEFAULT NULL,
  `updated_by` int(11) DEFAULT NULL,
  `deleted_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  `created_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
  `updated_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
  PRIMARY KEY (`trans_id`)
) ENGINE=InnoDB AUTO_INCREMENT=5025 DEFAULT CHARSET=latin1

当我执行App\Models\BaseModels\BallByBall::get();时,我收到一个空集合。

2 个答案:

答案 0 :(得分:3)

您正在使用SoftDeletes特征,看起来您在此deleted_at列中有时间戳而不是null。这意味着该记录被软删除,Laravel默认不会显示。

因此,使用withTrashed()方法也包括所有软删除的行:

BallByBall::withTrashed()->get()

或者将deleted_at更改为null以获取此记录。

答案 1 :(得分:0)

我认为您必须使用某些内容来获取软删除的记录,例如 - > withTrashed()函数。然后可以get()或all()集合。