Laravel-试图获得财产”;id";使用POST方法时的非对象属性

Laravel-试图获得财产”;id";使用POST方法时的非对象属性,laravel,api,Laravel,Api,我正在用Laravel编写一个端点。当我使用POST方法对postman进行测试时,我得到了以下错误: ErrorException:尝试获取文件C:\xampp\htdocs\testing file\testing\app\Http\Controllers\ApiController.php(第912行)中非对象的属性“id” 控制器 public function storeBilling(Request $request) { // $billing =

我正在用Laravel编写一个端点。当我使用POST方法对postman进行测试时,我得到了以下错误:

ErrorException:尝试获取文件C:\xampp\htdocs\testing file\testing\app\Http\Controllers\ApiController.php(第912行)中非对象的属性“id”

控制器

    public function storeBilling(Request $request)
    {
        // $billing = Billing::create($request->all());
        // return response()->json(['success' => $billing], $this-> successStatus);
        $validator = Validator::make($request->all(), [
            'network' => 'required'
        ]);
        if ($validator->fails()) {
            return response()->json($validator->errors(), 422);
        }

        // Creating a record in a different way
        $createBilling = Billing::create([
            'user_id' => $request->user()->id,
            'network' => $request->network,
            'sender' => $request->sender,
            'recipient' => $request->recipient,
            'message' => $request->message,
            'amount' => $request->amount,
            'billing_type' => $request->billing_type,
        ]);

        return new BillingResource($createBilling);      
    } 

模型

资源

namespace App\Http\Resources;

use Illuminate\Http\Resources\Json\JsonResource;
use App\Billing;

class BillingResource extends JsonResource
{
    /**
     * Transform the resource into an array.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return array
     */
    public function toArray($request)
    {
        return [
            'id' => $this->id,
            'network' => $this->network,
            'sender' => $this->sender,
            'recipient' => $this->recipient,
            'message' => $this->message,
            'amount' => $this->amount,
            'billing_type' => $this->billing_type,
            'email' => $this->email,
            'user' => $this->user,
            'service' => $this->service,
            'package' => $this->package,
            // Casting objects to string, to avoid receive create_at and update_at as object
            'timestamp' => (string) $this->timestamp,          
            'created_at' => (string) $this->created_at,
            'updated_at' => (string) $this->updated_at
          ];
    }
}
如果我使用此POST方法:

它可能会发布到数据库中,但我遇到了以下错误:

ErrorException:尝试获取文件C:\xampp\htdocs\testing file\testing\app\Http\Controllers\ApiController.php(第912行)中非对象的属性“id”


'user\u id'=>$request->user()->id

您的错误是说
$request->user()
不是对象,因此您无法使用对象表示法访问其参数,例如
->id

如果你
dd($request->user)
你可能会发现你没有得到你认为得到的东西-它可能是一个数组,或者它可能根本不是正确的值


如果它是一个数组,您可以访问值,如
$request['user']['id']
。这实际上取决于您在POST请求中传递的内容。

'user\u id'=>$request->user()->id

您的错误是说
$request->user()
不是对象,因此您无法使用对象表示法访问其参数,例如
->id

如果你
dd($request->user)
你可能会发现你没有得到你认为得到的东西-它可能是一个数组,或者它可能根本不是正确的值

如果它是一个数组,您可以访问值,如
$request['user']['id']
。这实际上取决于您在POST请求中传递的内容。

$request->user()->id
不正确

如果需要当前用户,可以使用
Auth::user()

$request->user()->id
不正确

如果您想要当前用户,可以对您使用
Auth::user()

公共功能存储计费(请求$Request)

您可以编写
$createBilling=Billing::create([
'user_id'=>$request->user()->id,
和此创建错误

或者最好使用
$createBilling=Billing::create([
'user_id'=>Auth::user()->id,
查找用户身份验证的id

不要忘记在控制器的开头添加
使用Auth;

公共功能存储计费(请求$Request)

您可以编写
$createBilling=Billing::create([
'user_id'=>$request->user()->id,
和此创建错误

或者最好使用
$createBilling=Billing::create([
'user_id'=>Auth::user()->id,
查找用户身份验证的id


不要忘记在控制器的开头添加
use Auth;

在问题的开头,您说您正在尝试使用Lravel构建端点

除非经过身份验证,否则邮递员将无权访问用户对象,如果经过身份验证,则此操作应有效::

 $request->user()->id or Auth::user()->id or $request["user"]["id"]

在问题的开头,您说您正在尝试使用Lravel构建端点

除非经过身份验证,否则邮递员将无权访问用户对象,如果经过身份验证,则此操作应有效::

 $request->user()->id or Auth::user()->id or $request["user"]["id"]

尝试检查此用户是否存在于db'user\u id'=>$request->user()->id中。可能在插入到db之前无法获取用户的id尝试检查此用户是否存在于db'user\u id'=>$request->user()->id中。可能在插入db之前无法获取用户的id