在laravel中获取订单中的用户地址

时间:2018-01-10 03:03:12

标签: php laravel

我尝试在我的订单编辑页面中获取用户地址,这是它的工作原理:

  1. 用户可以拥有多个地址(其中一个可以是主要地址)
  2. 订单获取用户ID
  3. 订单获取地址ID(地址将根据地址表中的用户ID循环,因此登录的用户无法使用其他用户地址)
  4. 这是问题:

    我尝试根据存储在订单表中的用户ID在我的订单编辑页面中获取地址(这意味着只获取保存此订单的人的地址而不是所有用户)

    这是我的编辑功能代码:

    public function edit($id)
        {
            $order = Order::find($id);
            $users = User::all();
            $statuses = Orderstatus::all();
            $addresses = Address::where($order->user_id, '=', 'user_id')->get();
            return view('admin.orders.edit', compact('order', 'users', 'statuses', 'addresses'));
        }
    

    这是我得到的错误:

      

    SQLSTATE [42S22]:找不到列:1054'where'中的未知列'5'   子句''(SQL:select * from addresses where 5 = user_id)

    这是我的刀片代码:

    <div class="col-md-4">
                        {{ Form::label('address_id', 'Shipping Address') }}
                        <select class="form-control" name="address_id">
                          @if(!empty($order->address_id))
                          @foreach($addresses as $address)
                          <option value="{{$address->id}}"  {{ $address->id == $order->address_id ? 'selected' : '' }}>{{$address->address}}</option>
                          @endforeach
                          @else
                          <option value="">Select Address</option>
                          @foreach($addresses as $address)
                            <option value="{{$address->id}}">{{$address->address}}</option>
                          @endforeach
                          @endif
                        </select>
                    </div>
    

    截图:

    address table

    address

    order table

    orders

      

    您可以在ordersaddresses表格中看到,我有user_id   列,我想将这两列匹配在一起得到结果。

    当Order-&gt; user_id与$ address-&gt; user_id循环结果匹配时。

    任何想法?

1 个答案:

答案 0 :(得分:1)

你的where功能混乱了。

必须是:

where('user_id', '=', $order->user_id)

而不是相反。 :)

此外,如果你正在使用=比较,你可以保留它,因为它是默认值,所以它可以是这样的:

where('user_id', $order->user_id)