Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/288.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何建立两个模型之间的关系并更新数据库_Php_Mysql_Laravel_Laravel 5_Eloquent - Fatal编程技术网

Php 如何建立两个模型之间的关系并更新数据库

Php 如何建立两个模型之间的关系并更新数据库,php,mysql,laravel,laravel-5,eloquent,Php,Mysql,Laravel,Laravel 5,Eloquent,又是我,但现在我需要你的更多帮助,我有一些版本的购物车,整个想法是当我点击产品按钮时,数据库将更新为用户(id)订购该产品(id)的信息。首先我用信息(id、产品名称、价格)创建订单表,另一个表是用户表(id、用户名)和最终的表用户订单表(id、用户id、订单id) 然后我做了两个模型,一个是产品的订单模型,另一个是用户模型。我想建立的关系是这两个模型之间的关系 用户模型功能: public function orders(){ return $this->belongsT

又是我,但现在我需要你的更多帮助,我有一些版本的购物车,整个想法是当我点击产品按钮时,数据库将更新为用户(id)订购该产品(id)的信息。首先我用信息(id、产品名称、价格)创建订单表,另一个表是用户表(id、用户名)和最终的表用户订单表(id、用户id、订单id)

然后我做了两个模型,一个是产品的订单模型,另一个是用户模型。我想建立的关系是这两个模型之间的关系

用户模型功能:

public function orders(){
        return $this->belongsToMany('App\Orders', 'user_order', 'user_id', 'order_id');
       // return $this->belongsToMany('App\Orders');
    }
public function users(){
      return $this->belongsToMany('App\User', 'user_order', 'order_id', 'user_id');
        //return $this->belongsToMany('App\User');
   }
public function makeOrder(Request $request, $id){

        $user = User::where('email', $request['email'])->first();
        $findorder = Orders::find($id);
        //$user->orders()->detach();
        $user->orders()->attach(Orders::where('id', $findorder))->first();

        return redirect()->back();

    }
订单模型功能:

public function orders(){
        return $this->belongsToMany('App\Orders', 'user_order', 'user_id', 'order_id');
       // return $this->belongsToMany('App\Orders');
    }
public function users(){
      return $this->belongsToMany('App\User', 'user_order', 'order_id', 'user_id');
        //return $this->belongsToMany('App\User');
   }
public function makeOrder(Request $request, $id){

        $user = User::where('email', $request['email'])->first();
        $findorder = Orders::find($id);
        //$user->orders()->detach();
        $user->orders()->attach(Orders::where('id', $findorder))->first();

        return redirect()->back();

    }
这是我使用submit按钮显示所有产品的主html:

 <div class="row">
                    @foreach($orders as $order)
                    <div class="col-sm-4 col-lg-4 col-md-4">
                        <div class="thumbnail">
                            <img src="http://placehold.it/320x150" alt="">
                            <div class="caption">
                                <h4 class="pull-right">{{ $order->cena }}</h4>
                                <h4><a href="#">{{ $order->order_name }}</a>
                                </h4>
                                <p>See more snippets like this online store item at <a target="_blank" href="http://www.bootsnipp.com">Bootsnipp - http://bootsnipp.com</a>.</p>
                            </div>
                            <div class="ratings">
                                <p class="pull-right">15 reviews</p>
                                <p>
                                    <span class="glyphicon glyphicon-star"></span>
                                    <span class="glyphicon glyphicon-star"></span>
                                    <span class="glyphicon glyphicon-star"></span>
                                    <span class="glyphicon glyphicon-star"></span>
                                    <span class="glyphicon glyphicon-star"></span>
                                </p>
                            </div>
                            <div class="btn-group center">

                                <a href="{{ route('product.makeOrder',['id' => $order->id]) }}" name="req" class="btn btn-warning">Order this product!</a> 
                            </div> 
                            <br>
                        </div>
                    </div>
                    @endforeach
路线:

Route::get('/add-to-database/{id}',[
        'uses' => 'AppController@makeOrder',
        'as' => 'product.makeOrder'
        ]);
整个想法是如何在提交按钮后使用用户id和产品id更新表用户订单

有什么帮助吗

您的
makeOrder()
应该是:

public function makeOrder(Request $request, $id) {
  $user = User::where('email', $request->get('email'))->first();

  // this is to make sure that order is available in database
  $order = Orders::findOrFail($id);

  $user->orders()->attach($order->id);

  return redirect()->back();
}

什么不起作用,或者你需要哪部分的帮助?我不知道如何实现我在问题中提到的功能,你是否至少为此创建了路线和控制器?另外,我看不到提交按钮。我认为轴心应该是
订单
,用户模型应该有
products()
方法,产品模型应该有
User()
方法。用户有多个订单,但不属于多个订单。请观看此免费: