Невозможно объявить класс App \ User, так как имя уже используется Laravel - PullRequest
0 голосов
/ 01 марта 2020

Я хочу добавить адрес пользователя в таблицу адресов и хочу обновить address_id в таблице пользователей, для этого я использую модель пользователя и модель адреса, данные сохраняются в таблице адресов, но когда я использую модель пользователя в хранилище адресов

use App \ Models \ User;

i get

Невозможно объявить класс App \ User, так как имя уже используется

Вот мой код:

<?php 
namespace App\Repositories;

use App\Models\Addresses;
use App\Models\User;
use App\Contracts\AddressContract;
use Illuminate\Database\QueryException;
use Illuminate\Database\Eloquent\ModelNotFoundException;
use Doctrine\Instantiator\Exception\InvalidArgumentException;

class AddressRepository extends BaseRepository implements AddressContract
{
    /**
     * AttributeRepository constructor.
     * @param Attribute $model
     */
    public function __construct(Addresses $model)
    {
        parent::__construct($model);
        $this->model = $model;
    }


    public function addAddress(array $params)
    {
        try {

            $Addresses = new Addresses($params);
            $Addresses->save();
            $addressId = $Addresses->id;
            $userID=auth()->user()->id;
            if($params['is_primary_address']==1)
            {   
                User::where('id',$userID)->update(['address_id'=>$addressId]);
            }
            return $Addresses;
            }
            catch (QueryException $exception) {
            throw new InvalidArgumentException($exception->getMessage());
        }
    }
}

ProductController. php

<?php

namespace App\Http\Controllers\Site;
use App\Contracts\AttributeContract;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use App\Contracts\ProductContract;
use App\Contracts\AddressContract;
use Cart;
use Validator;

class ProductController extends Controller
{ 
    protected $productRepository;
    protected $attributeRepository;
    protected $addressRepository;
    public function __construct(ProductContract $productRepository, AttributeContract $attributeRepository, AddressContract $addressRepository)
{  
    $this->productRepository = $productRepository;
    $this->attributeRepository = $attributeRepository;
    $this->addressRepository = $addressRepository;
}

public function addUserAddress(Request $request)
{
    $customer_name=$request->customer_name;
    $customer_address=$request->customer_address; 
    $country=$request->country; 
    $city=$request->city;
    $zip_code=$request->zip_code;  
    $state=$request->state; 
    $address_type=$request->address_type; 
    $is_primary_address=$request->primary_address; 
    $userID=auth()->user()->id;
    $data=array('name'=>$customer_name,'address'=>$customer_address,'country'=>$country,'state'=>$state,'city'=>$city,'address_type'=>$address_type,'user_id'=>$userID,'is_primary_address'=>$is_primary_address);
    $userAddress  = $this->addressRepository->addAddress($data);
    return redirect()->back()->with('message', 'Address Added');
}
}
...