laravel 拉瑞维尔:计数():参数#1($value)必须是可计数类型|数组,给定空值

zzzyeukh  于 2022-11-18  发布在  其他
关注(0)|答案(2)|浏览(246)

我正在尝试添加这个功能称为预订为他人。如果用户要订购5旅游包,用户必须输入4电子邮件的用户朋友,通知他们,他们得到了旅游包由该用户。我的想法是存储电子邮件在数组中。当我试图创建前端我得到错误count(): Argument #1 ($value) must be of type Countable|array, null given。我如何存储数组值?
控制器:

public function store(Request $request){
        $numbers = $request->numbers;
        $emails = $request->email;
        for($count = 0; $count < count($numbers); $count++){
            emails::create([
                'email'=>$emails[$count]
            ]);
        }
        return redirect ('/home/');
    }

刀片文件:

<form action="{{route('EmailStore')}}" method="post">
    @csrf
    <div class="form-group">
        <label>How many people</label>
        <input type="text" required class="form-control @error ('numbers') is-invalid @enderror" 
        id="numbers" name="numbers" autocomplete="off">
    </div>
    @php
        $emails = count($numbers);
    @endphp
    @for ($i = 0; $i < $emails; $i++)
        <tr>
            <td>
                <label>Email.{{$i}}</label>
                <input type="text" required class="form-control @error ('email') is-invalid @enderror" 
                id="email" name="email[]" autocomplete="off">
            </td>
        </tr>
    @endfor
    <button type="submit" class="btn btn-info" id="btn_submit" 
        style="background-color: #eefa69; border:none; color:black">Submit</button>
</form>

例如输入是这样的:How many book : 5

Email number 1 : a@gmail.com
Email number 2 : b@gmail.com
Email number 3: c@gmail.com
Email number 4: d@gmail.com
oug3syen

oug3syen1#

如果$request->number是一个整数和一个指定数字的字符串,则可以用途:

for ($count = 0; $count < intval($numbers); $count++) {
    .
    .
    .

如果它是一个数组,并且需要确保:

for ($count = 0; $count < count((array) $numbers); $count++) {
    .
    .
    .
yzxexxkh

yzxexxkh2#

将email表与user表相关联效果更好。
| 标识符|用户标识|电邮|
| - -|- -|- -|
| 一个|一个|朋友1 @电子邮件|
| 一个|一个|朋友2 @电子邮件|
| 一个|2个|朋友3 @电子邮件|
用户模型应该与booking_emails表有多对多的关系。在这之后,您可以使用attach()方法。您不需要使用循环来保存电子邮件。附加/分离
然后您可以报告:

  • 有多少人为朋友、
  • 总共有多少个独立用户已预订等。

如果您使用阵列,您可以获得这些信息,但它不会是更好的解决方案/性能。

相关问题