Ошибка «Попытка получить свойство необъекта» - PullRequest
0 голосов
/ 08 октября 2018

как решить (пытается получить свойство не-объекта) ошибку, но эта же функция хорошо работает в другой функции

что не так с этим контроллером, я всегда получаю эту ошибку при обновлении заказачтобы получить свойство не-объекта ", (обратите внимание, что я использую ту же функцию для магазина, и она отлично работает.

У меня есть 4 таблицы в моей базе данных (user_type_id, пользователи, продукты и заказы, таблица заказовсодержит 4 столбца (id, product_id, user_id и qty), user_id и product_id = внешние ключи таблиц пользователей и продуктов.

также я хочу что-то, я не знаю, как это правильно написать, я хочу, когда клиентудалить заказ, и это только один заказ (количество = 1), который должен быть удален навсегда, а также, если он набрал то же количество, который будет удален навсегда, потому что, когда я тестировал эту функцию, я обнаружил, что она продолжает удалять до -1 -2-3 и т. Д.

и я хочу, чтобы количество продукта было равно 0, чтобы скрыть продукт для всех пользователей, кроме администраторов и продавцов.кто продал его или, по крайней мере, скрыл кнопку «Добавить в корзину» для всех или заменил ее мертвой кнопкой «нет в наличии» вместо «Добавить в корзину», и если пользователь уже заказал часть этого продукта, он не может обновить количество, но затем может отменить егоэто будет добавлено к продуктам снова ..

, и я надеюсь, что если кто-то сказал мне, как использовать прокомментированные промежутки, потому что я не знаю, как это сделать также: D спасибо

    namespace App\Http\Controllers;
    use Illuminate\Http\Request;
    use App\Http\Requests;
    use App\Order;
    use App\Product;
    use Auth;
    use App\User;
    use App\Details;
    use Validator;

    class OrderController extends Controller
    {

        public function __construct()
        {
            $this->middleware('auth');
        }

        public function myorders()
        {
            $orders = Order::where('user_id','=',Auth::user()->id)->orderBy('id','desc')->get();
            return view('order.myorders',compact('products','orders','users'));
        }   






      public function buy(Request $id)
        {
            $product = Product::find($id);
            return view('product.index',compact('product','order','user'));
        }

    public function store(Request $request, $id)


            {
            $validator = Validator::make($request->all(), [
                'qty' => 'required|max:255',

            ]);

            if ($validator->fails()) {
                return redirect('')
                            ->withErrors($validator)
                            ->withInput();
            }

            $product = Product::find($id);
            $order = new Order();
            $order->user_id = Auth::user()->id;
            $order->product_id = $id;
            $order->qty = $request['qty'];
            $product->inv = $product->inv - $order->qty;
            $order->save();
            $product->save();
            return redirect('/');
        }


    public function edit(Request $id)
        {
            $product = Product::find($id);
            return view('order.myorders',compact('product','order','user'));
        }


    public function update(Request $request, $id)


            {
            $validator = Validator::make($request->all(), [
                'qty' => 'required|max:255',

            ]);

            if ($validator->fails()) {
                return redirect('')
                            ->withErrors($validator)
                            ->withInput();
            }


            $product = Product::find($id);
            $order = new Order();
            $order->user_id = Auth::user()->id;
            $order->product_id = $id;
            $order->qty = $request['qty'];                                  
  this line $product->inv = $product->inv - $order->qty; (it works in store)
            $order->save();
            $product->save();

            return redirect('/myorders');

        }


            public function delete($id)
        {
            $order = Order::find($id);
            return view('order.myorders',compact('product','order','user'));
        }


              public function destroy(Request $request, $id)
            {
            $validator = Validator::make($request->all(), [
                'qty' => 'required|max:255',

            ]);

            if ($validator->fails()) {
                return redirect('')
                            ->withErrors($validator)
                            ->withInput();
            }
            $order = Order::find($id);
        $product= Product::find($order->product_id);
        $order->qty = $order->qty - $request->input('qty');
        $product->inv = $product->inv + $order->qty;
        $product->save();
        $order->save();
            return redirect('/myorders');

        }  

    }

и это файл маршрутов

Route::get('/myorders', 'OrderController@myorders');
Route::get('/add_order', 'OrderController@buy');
Route::get('/add_order/{id}', 'OrderController@store');
Route::get('/update_order', 'OrderController@edit');
Route::get('/update_order/{id}', 'OrderController@update');
Route::get('/delete_order', 'OrderController@delete');
Route::get('/delete_order/{id}', 'OrderController@destroy');

, и это мое мнение, я использую его с

<div class="klaviyo_modal" id="update_order_qty" style="display:none;">
    <div class="klaviyo_inner">
        <a href="Cancel" class="klaviyo_close_modal klaviyo_header_close">×</a>
            <form method="GET" action="/update_order/{{ $order['id'] }}" enctype="multipart/form-data">
                {{ csrf_field() }}
                    <p class="klaviyo_header">Please update quantity as you need, then order it.</p>
                        <div class="klaviyo_fieldset">
                            <div class="{{ $errors->has('qty') ? ' has-error' : '' }}">
                                <label for="qty" style="display:block;text-align:center;margin-bottom:25px">Ordered New Quantity will be ADDED to your CURRENT Order Quantity</label>
                                    <input type="number" id="qty" class="qty" name="qty" style="display:block;margin:auto" required="required" placeholder="CURRENT Quantity">
                                    @if ($errors->has('qty'))
                                    <span class="help-block">
                                         <strong style="display:block;text-align:center">{{ $errors->first('qty') }}</strong>
                                    </span>
                                    @endif
                            </div>
                        </div>
          <div class="klaviyo_fine_print"></div>
              <div class="klaviyo_form_actions">
                 <button type="submit" class="klaviyo_submit_button">
                        <span>Update Order Quantity Now</span>
                 </button>
              </div>



            <!-- <span class="help-block">
                  <div class="success_message" style="display: block; text-align:center">Order Updated Successfully</div><br>
            </span>   
            <span class="help-block">  
                  <strong class="error_message" style="display: block; text-align:center">Sorry, Product Out of Stock, Try again later</strong>
            </span> -->        



            </form>
    </div>
</div>

Ответы [ 2 ]

0 голосов
/ 09 октября 2018

ок, спасибо за все :), я это исправил, это было действие вида: D action="/update_order/{{ $order['id'] }}" , It should be action="/update_order/{{ $order->product->id }}" ,,

Сейчас :) Я

Я хочу что-то сделатьне знаю, как правильно написать, я хочу, чтобы клиент удалил заказ, и это только один заказ (количество = 1), который был удален навсегда, а также, если он набрал то же количество, чтобы он был удален навсегда, потому что, когда я тестироваля обнаружил, что эту функцию продолжает удалять до -1 -2 -3 и т. д.

, и я хочу, чтобы при количестве продуктов 0 скрывался продукт для всех пользователей, кроме администраторов и продавца, который его продал илипо крайней мере, чтобы скрыть кнопку «Добавить в корзину» для всех или заменить ее мертвой кнопкой «нет в наличии» вместо «Добавить в корзину», и если пользователь уже заказал часть этого продукта, он не может обновить количество, но может отменить его, тогда он будет добавлен впродукты снова ..

и я надеюсь, что если кто-то скажет мне, как использовать закомментированные промежутки, потому что я тоже не знаю, как это сделать: D спасибо, еще раз ...

0 голосов
/ 08 октября 2018

Все действия, где вы используете action(Request $id), ошибочны!

  public function buy(Request $id)
  {
       $product = Product::find($id);
       return view('product.index',compact('product','order','user'));
  }

и маршрут для этого действия: Route::get('/add_order', 'OrderController@buy'); $ id должен быть объектом класса Request.Но вы пытаетесь использовать его как целочисленное значение в Product::find($id);.Конечно, переменная $ product равна нулю!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...