Laravel-试图获得财产”;id";使用POST方法时的非对象属性
我正在用Laravel编写一个端点。当我使用POST方法对postman进行测试时,我得到了以下错误: ErrorException:尝试获取文件C:\xampp\htdocs\testing file\testing\app\Http\Controllers\ApiController.php(第912行)中非对象的属性“id” 控制器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 =
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