Laravel 获得可供会议使用的表格

Laravel 获得可供会议使用的表格,laravel,laravel-5,drop-down-menu,Laravel,Laravel 5,Drop Down Menu,我有两种形式;第一个是表单formers,包含两个字段(name,firstname) 我还有带有两个字段的trainings(date\u siting,fk\u former)表单 我的问题是,如果我想增加今天(2019年7月7日)的另一次会议,我只希望看到今天没有接受培训的前队员 在这里,我找到了一位今天有一次会议的前任 你认为有可能只让那些暂时没有坐的人坐下来吗 编辑:2019年7月10日 控制器培训 public function index() { $t

我有两种形式;第一个是表单
formers
,包含两个字段(name,firstname)

我还有带有两个字段的
trainings
(date\u siting,fk\u former)表单

我的问题是,如果我想增加今天(2019年7月7日)的另一次会议,我只希望看到今天没有接受培训的前队员

在这里,我找到了一位今天有一次会议的前任

你认为有可能只让那些暂时没有坐的人坐下来吗

编辑:2019年7月10日

控制器培训

public function index()
    {
        $trainings = Training::oldest()->paginate(5);

        $formersNoTrainingToday = Training::whereDate('date_sitting', "!=", Carbon::today())
           ->orWhere('date_sitting', null)->get();

        return view('admin.trainings.index', compact('trainings', 'formersNoTrainingToday'))
            ->with('i', (request()->input('page',1) -1)*5);

    }

我只想看到今天没有接受训练的前队员

当然-您可以使用以下查询确定要显示的正确候选列表:

$formersNoTrainingToday = Training::whereDate('date_sitting', "!=", Carbon::today())
           ->orWhere('date_sitting', null)->get();
这应该有用。。。但它假设代码/db中有一些内容。如果失败,请考虑几个选项:<强> >替换<强> >代码> 使用地点:

->where('date_sitting', '!=', \Carbon::today()->toDateString())
如果数据库上的该列的格式不同于碳,则使用格式化日期:

->whereDate('date_sitting', "!=", Carbon::now()->format('m/d/Y'))
如果出于某种原因不使用碳,您可以尝试今天的原始查询路线:

->whereDate('date_sitting', "!=", DB::raw('CURDATE()'))
底线是,这里有很多方法来接近这一点。但是你可能需要自己调整这个来满足你的需要。您可能需要考虑时区或几个小时的差异,因此您可能需要添加一个范围或缓冲区。但是,如果不是一路走来,以上这些应该会让你走近


HTH

要获取形成者的id(以及姓名,如果在培训模型中使用),请使用上面的代码,但不要使用
get()
,而是使用
->pull('name','id')。这将为您提供一个今天没有培训的列表,可供下拉使用。但是,如果仅在
store()
方法中使用此选项,则不能在下拉列表中使用此选项-这只是为了在提交新的存储培训后对今天未接受过培训的人进行验证。因此,如果你不想让已经接受过培训的表单显示出来(通过
show()。我想你应该删掉下拉列表中的“前队员”列表,不要显示那些已经参加了当天训练的队员。要做到这一点,您需要将缩减列表(使用上面日期前的筛选代码)发送到create.blade。我想说的是,您需要以任何发送代码到create.blade的方法过滤“former”列表<代码>存储()
将不起作用,因为这是在发送create.blade文件之后发生的。因此,无论您使用什么方法发送到create.blade(
create()
?)都可以-不必是
show()
:)当然,您可以使用任何希望将名称/id列表发送到下拉列表的方法。关键是,无论您选择何种方法,都要使用要修剪的日期列表进行过滤。完全取决于您如何构造它,但惯例通常是使用
create()
方法为即将创建的新元素发送这种类型的列表,
edit()
用下拉菜单显示编辑屏幕,如果只是显示已经存在的内容,则使用
show()
,这里可能是查看文档、研究查询以及get()、pull()、first()等的地方。上面的语法不起作用。需要在最后进行拔毛。所以,您看到的是这样的:
Training::whereDate('date_-siting',“!=”,Carbon::today())->或者where('date_-siting',null)->pull('name','id')它不是日期过滤器的一部分,而是整个集合的,因此在查询结束时。太大了,不能在这里讨论,但一定要复习一些关于这个的教程:)没问题,谢谢你的帮助。。。我正在寻找一些教程。。。
->whereDate('date_sitting', "!=", DB::raw('CURDATE()'))