加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

php – Laravel 5:在扩展User的模型上查找函数

发布时间:2020-12-14 19:40:08 所属栏目:大数据 来源:网络整理
导读:我正在使用Laravel 5并且有多个模型(患者,治疗师)从用户模型扩展. 我在DB中有一些虚拟数据(很少有治疗师,很少有患者). 当我想通过id检索治疗师时,我尝试通过Therapist :: find($id)这样做,但得到一个例外: 'IlluminateDatabaseQueryException' with messa
我正在使用Laravel 5并且有多个模型(患者,治疗师)从用户模型扩展.
我在DB中有一些虚拟数据(很少有治疗师,很少有患者).
当我想通过id检索治疗师时,我尝试通过Therapist :: find($id)这样做,但得到一个例外:

'IlluminateDatabaseQueryException' with message 'SQLSTATE[23000]: 
     Integrity constraint violation: 1062 Duplicate entry '' for key
    'users_email_unique' (SQL: insert into users`

几个问题:
1.为什么当我使用:: find函数时,它会尝试插入一个新用户?
2.如何在从User扩展的对象上使用:: find函数以获取每个模型的属性?

编辑

Ajax调用

/getTherapist

routes.php文件:

Route::get('/getTherapist','HomeController@getTherapist');

HomeController.php:

public function getTherapist()
{
    $user = Therapist::find(13);
    return $user->toArray();
}

完全例外:

> Next exception 'IlluminateDatabaseQueryException' with message
> 'SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry
> '' for key 'users_email_unique' (SQL: insert into `users`
> (`updated_at`,`created_at`) values (2016-07-24 13:26:42,2016-07-24
> 13:26:42))' in
> C:wampwwwclinicvendorlaravelframeworksrcIlluminateDatabaseConnection.php:725
> Stack trace:
> #0 C:wampwwwclinicvendorlaravelframeworksrcIlluminateDatabaseConnection.php(681):
> IlluminateDatabaseConnection->runQueryCallback('insert into `us...',> Array,Object(Closure))
> #1 C:wampwwwclinicvendorlaravelframeworksrcIlluminateDatabaseConnection.php(454):
> IlluminateDatabaseConnection->run('insert into `us...',Array,> Object(Closure))
> #2 C:wampwwwclinicvendorlaravelframeworksrcIlluminateDatabaseConnection.php(410):
> IlluminateDatabaseConnection->statement('insert into `us...',Array)
> #3 C:wampwwwclinicvendorlaravelframeworksrcIlluminateDatabaseQueryProcessorsProcessor.php(32):
> IlluminateDatabaseConnection->insert('insert into `us...',Array)
> #4 C:wampwwwclinicvendorlaravelframeworksrcIlluminateDatabaseQueryBuilder.php(2055):
> IlluminateDatabaseQueryProcessorsProcessor->processInsertGetId(Object(IlluminateDatabaseQueryBuilder),> 'insert into `us...','id')
> #5 [internal function]: IlluminateDatabaseQueryBuilder->insertGetId(Array,'id')
> #6 C:wampwwwclinicvendorlaravelframeworksrcIlluminateDatabaseEloquentBuilder.php(1422):
> call_user_func_array(Array,Array)
> #7 C:wampwwwclinicvendorlaravelframeworksrcIlluminateDatabaseEloquentModel.php(1628):
> IlluminateDatabaseEloquentBuilder->__call('insertGetId',Array)
> #8 C:wampwwwclinicvendorlaravelframeworksrcIlluminateDatabaseEloquentModel.php(1628):
> IlluminateDatabaseEloquentBuilder->insertGetId(Array,'id')
> #9 C:wampwwwclinicvendorlaravelframeworksrcIlluminateDatabaseEloquentModel.php(1597):
> IlluminateDatabaseEloquentModel->insertAndSetId(Object(IlluminateDatabaseEloquentBuilder),> Array)
> #10 C:wampwwwclinicvendorlaravelframeworksrcIlluminateDatabaseEloquentModel.php(1488):
> IlluminateDatabaseEloquentModel->performInsert(Object(IlluminateDatabaseEloquentBuilder),> Array)
> #11 C:wampwwwclinicvendorzizacoentrustsrcEntrustTraitsEntrustUserTrait.php(28):
> IlluminateDatabaseEloquentModel->save(Array)
> #12 C:wampwwwclinicappTherapist.php(16): AppUser->save()
> #13 C:wampwwwclinicvendorlaravelframeworksrcIlluminateDatabaseEloquentModel.php(538):
> AppTherapist->__construct()
> #14 C:wampwwwclinicvendorlaravelframeworksrcIlluminateDatabaseEloquentBuilder.php(628):
> IlluminateDatabaseEloquentModel::hydrate(Array,NULL)
> #15 C:wampwwwclinicvendorlaravelframeworksrcIlluminateDatabaseEloquentBuilder.php(316):
> IlluminateDatabaseEloquentBuilder->getModels(Array)
> #16 C:wampwwwclinicvendorlaravelframeworksrcIlluminateDatabaseEloquentBuilder.php(286):
> IlluminateDatabaseEloquentBuilder->get(Array)
> #17 C:wampwwwclinicvendorlaravelframeworksrcIlluminateDatabaseEloquentBuilder.php(167):
> IlluminateDatabaseEloquentBuilder->first(Array)
> #18 [internal function]: IlluminateDatabaseEloquentBuilder->find(13)
> #19 C:wampwwwclinicvendorlaravelframeworksrcIlluminateDatabaseEloquentModel.php(3505):
> call_user_func_array(Array,Array)
> #20 [internal function]: IlluminateDatabaseEloquentModel->__call('find',Array)
> #21 [internal function]: AppTherapist->find(13)
> #22 C:wampwwwclinicvendorlaravelframeworksrcIlluminateDatabaseEloquentModel.php(3519):
> call_user_func_array(Array,Array)
> #23 C:wampwwwclinicappHttpControllersHomeController.php(93): IlluminateDatabaseEloquentModel::__callStatic('find',Array)
> #24 C:wampwwwclinicappHttpControllersHomeController.php(93): AppTherapist::find(13)
> #25 [internal function]: AppHttpControllersHomeController->getTherapist()
> #26 C:wampwwwclinicvendorlaravelframeworksrcIlluminateRoutingController.php(80):
> call_user_func_array(Array,Array)
> #27 C:wampwwwclinicvendorlaravelframeworksrcIlluminateRoutingControllerDispatcher.php(146):
> IlluminateRoutingController->callAction('getTherapist',Array)
> #28 C:wampwwwclinicvendorlaravelframeworksrcIlluminateRoutingControllerDispatcher.php(94):
> IlluminateRoutingControllerDispatcher->call(Object(AppHttpControllersHomeController),> Object(IlluminateRoutingRoute),'getTherapist')
> #29 [internal function]: IlluminateRoutingControllerDispatcher->IlluminateRouting{closure}(Object(IlluminateHttpRequest))
> #30 C:wampwwwclinicvendorlaravelframeworksrcIlluminateRoutingPipeline.php(52):
> call_user_func(Object(Closure),Object(IlluminateHttpRequest))
> #31 C:wampwwwclinicappHttpMiddlewareAuthenticate.php(28): IlluminateRoutingPipeline->IlluminateRouting{closure}(Object(IlluminateHttpRequest))
> #32 [internal function]: AppHttpMiddlewareAuthenticate->handle(Object(IlluminateHttpRequest),> Object(Closure))
> #33 C:wampwwwclinicvendorlaravelframeworksrcIlluminatePipelinePipeline.php(136):
> call_user_func_array(Array,Array)
> #34 [internal function]: IlluminatePipelinePipeline->IlluminatePipeline{closure}(Object(IlluminateHttpRequest))
> #35 C:wampwwwclinicvendorlaravelframeworksrcIlluminateRoutingPipeline.php(32):
> call_user_func(Object(Closure),Object(IlluminateHttpRequest))
> #36 [internal function]: IlluminateRoutingPipeline->IlluminateRouting{closure}(Object(IlluminateHttpRequest))
> #37 C:wampwwwclinicvendorlaravelframeworksrcIlluminatePipelinePipeline.php(103):
> call_user_func(Object(Closure),Object(IlluminateHttpRequest))
> #38 C:wampwwwclinicvendorlaravelframeworksrcIlluminateRoutingControllerDispatcher.php(96):
> IlluminatePipelinePipeline->then(Object(Closure))
> #39 C:wampwwwclinicvendorlaravelframeworksrcIlluminateRoutingControllerDispatcher.php(54):
> IlluminateRoutingControllerDispatcher->callWithinStack(Object(AppHttpControllersHomeController),Object(IlluminateHttpRequest),> 'getTherapist')
> #40 C:wampwwwclinicvendorlaravelframeworksrcIlluminateRoutingRoute.php(174):
> IlluminateRoutingControllerDispatcher->dispatch(Object(IlluminateRoutingRoute),> Object(IlluminateHttpRequest),'AppHttpContro...',> 'getTherapist')
> #41 C:wampwwwclinicvendorlaravelframeworksrcIlluminateRoutingRoute.php(140):
> IlluminateRoutingRoute->runController(Object(IlluminateHttpRequest))
> #42 C:wampwwwclinicvendorlaravelframeworksrcIlluminateRoutingRouter.php(724):
> IlluminateRoutingRoute->run(Object(IlluminateHttpRequest))
> #43 [internal function]: IlluminateRoutingRouter->IlluminateRouting{closure}(Object(IlluminateHttpRequest))
> #44 C:wampwwwclinicvendorlaravelframeworksrcIlluminateRoutingPipeline.php(52):
> call_user_func(Object(Closure),Object(IlluminateHttpRequest))
> #45 C:wampwwwclinicvendorlaravelframeworksrcIlluminateFoundationHttpMiddlewareVerifyCsrfToken.php(64):
> IlluminateRoutingPipeline->IlluminateRouting{closure}(Object(IlluminateHttpRequest))
> #46 [internal function]: IlluminateFoundationHttpMiddlewareVerifyCsrfToken->handle(Object(IlluminateHttpRequest),> Object(Closure))
> #47 C:wampwwwclinicvendorlaravelframeworksrcIlluminatePipelinePipeline.php(136):
> call_user_func_array(Array,Array)
> #48 [internal function]: IlluminatePipelinePipeline->IlluminatePipeline{closure}(Object(IlluminateHttpRequest))
> #49 C:wampwwwclinicvendorlaravelframeworksrcIlluminateRoutingPipeline.php(32):
> call_user_func(Object(Closure),Object(IlluminateHttpRequest))
> #50 C:wampwwwclinicvendorlaravelframeworksrcIlluminateViewMiddlewareShareErrorsFromSession.php(49):
> IlluminateRoutingPipeline->IlluminateRouting{closure}(Object(IlluminateHttpRequest))
> #51 [internal function]: IlluminateViewMiddlewareShareErrorsFromSession->handle(Object(IlluminateHttpRequest),> Object(Closure))
> #52 C:wampwwwclinicvendorlaravelframeworksrcIlluminatePipelinePipeline.php(136):
> call_user_func_array(Array,Array)
> #53 [internal function]: IlluminatePipelinePipeline->IlluminatePipeline{closure}(Object(IlluminateHttpRequest))
> #54 C:wampwwwclinicvendorlaravelframeworksrcIlluminateRoutingPipeline.php(32):
> call_user_func(Object(Closure),Object(IlluminateHttpRequest))
> #55 C:wampwwwclinicvendorlaravelframeworksrcIlluminateSessionMiddlewareStartSession.php(62):
> IlluminateRoutingPipeline->IlluminateRouting{closure}(Object(IlluminateHttpRequest))
> #56 [internal function]: IlluminateSessionMiddlewareStartSession->handle(Object(IlluminateHttpRequest),> Object(Closure))
> #57 C:wampwwwclinicvendorlaravelframeworksrcIlluminatePipelinePipeline.php(136):
> call_user_func_array(Array,Array)
> #58 [internal function]: IlluminatePipelinePipeline->IlluminatePipeline{closure}(Object(IlluminateHttpRequest))
> #59 C:wampwwwclinicvendorlaravelframeworksrcIlluminateRoutingPipeline.php(32):
> call_user_func(Object(Closure),Object(IlluminateHttpRequest))
> #60 C:wampwwwclinicvendorlaravelframeworksrcIlluminateCookieMiddlewareAddQueuedCookiesToResponse.php(37):
> IlluminateRoutingPipeline->IlluminateRouting{closure}(Object(IlluminateHttpRequest))
> #61 [internal function]: IlluminateCookieMiddlewareAddQueuedCookiesToResponse->handle(Object(IlluminateHttpRequest),> Object(Closure))
> #62 C:wampwwwclinicvendorlaravelframeworksrcIlluminatePipelinePipeline.php(136):
> call_user_func_array(Array,Array)
> #63 [internal function]: IlluminatePipelinePipeline->IlluminatePipeline{closure}(Object(IlluminateHttpRequest))
> #64 C:wampwwwclinicvendorlaravelframeworksrcIlluminateRoutingPipeline.php(32):
> call_user_func(Object(Closure),Object(IlluminateHttpRequest))
> #65 C:wampwwwclinicvendorlaravelframeworksrcIlluminateCookieMiddlewareEncryptCookies.php(59):
> IlluminateRoutingPipeline->IlluminateRouting{closure}(Object(IlluminateHttpRequest))
> #66 [internal function]: IlluminateCookieMiddlewareEncryptCookies->handle(Object(IlluminateHttpRequest),> Object(Closure))
> #67 C:wampwwwclinicvendorlaravelframeworksrcIlluminatePipelinePipeline.php(136):
> call_user_func_array(Array,Array)
> #68 [internal function]: IlluminatePipelinePipeline->IlluminatePipeline{closure}(Object(IlluminateHttpRequest))
> #69 C:wampwwwclinicvendorlaravelframeworksrcIlluminateRoutingPipeline.php(32):
> call_user_func(Object(Closure),Object(IlluminateHttpRequest))
> #70 [internal function]: IlluminateRoutingPipeline->IlluminateRouting{closure}(Object(IlluminateHttpRequest))
> #71 C:wampwwwclinicvendorlaravelframeworksrcIlluminatePipelinePipeline.php(103):
> call_user_func(Object(Closure),Object(IlluminateHttpRequest))
> #72 C:wampwwwclinicvendorlaravelframeworksrcIlluminateRoutingRouter.php(726):
> IlluminatePipelinePipeline->then(Object(Closure))
> #73 C:wampwwwclinicvendorlaravelframeworksrcIlluminateRoutingRouter.php(699):
> IlluminateRoutingRouter->runRouteWithinStack(Object(IlluminateRoutingRoute),> Object(IlluminateHttpRequest))
> #74 C:wampwwwclinicvendorlaravelframeworksrcIlluminateRoutingRouter.php(675):
> IlluminateRoutingRouter->dispatchToRoute(Object(IlluminateHttpRequest))
> #75 C:wampwwwclinicvendorlaravelframeworksrcIlluminateFoundationHttpKernel.php(246):
> IlluminateRoutingRouter->dispatch(Object(IlluminateHttpRequest))
> #76 [internal function]: IlluminateFoundationHttpKernel->IlluminateFoundationHttp{closure}(Object(IlluminateHttpRequest))
> #77 C:wampwwwclinicvendorlaravelframeworksrcIlluminateRoutingPipeline.php(52):
> call_user_func(Object(Closure),Object(IlluminateHttpRequest))
> #78 C:wampwwwclinicvendorlaravelframeworksrcIlluminateFoundationHttpMiddlewareCheckForMaintenanceMode.php(44):
> IlluminateRoutingPipeline->IlluminateRouting{closure}(Object(IlluminateHttpRequest))
> #79 [internal function]: IlluminateFoundationHttpMiddlewareCheckForMaintenanceMode->handle(Object(IlluminateHttpRequest),> Object(Closure))
> #80 C:wampwwwclinicvendorlaravelframeworksrcIlluminatePipelinePipeline.php(136):
> call_user_func_array(Array,Array)
> #81 [internal function]: IlluminatePipelinePipeline->IlluminatePipeline{closure}(Object(IlluminateHttpRequest))
> #82 C:wampwwwclinicvendorlaravelframeworksrcIlluminateRoutingPipeline.php(32):
> call_user_func(Object(Closure),Object(IlluminateHttpRequest))
> #83 [internal function]: IlluminateRoutingPipeline->IlluminateRouting{closure}(Object(IlluminateHttpRequest))
> #84 C:wampwwwclinicvendorlaravelframeworksrcIlluminatePipelinePipeline.php(103):
> call_user_func(Object(Closure),Object(IlluminateHttpRequest))
> #85 C:wampwwwclinicvendorlaravelframeworksrcIlluminateFoundationHttpKernel.php(132):
> IlluminatePipelinePipeline->then(Object(Closure))
> #86 C:wampwwwclinicvendorlaravelframeworksrcIlluminateFoundationHttpKernel.php(99):
> IlluminateFoundationHttpKernel->sendRequestThroughRouter(Object(IlluminateHttpRequest))
> #87 C:wampwwwclinicpublicindex.php(54): IlluminateFoundationHttpKernel->handle(Object(IlluminateHttpRequest))
> #88 {main}

解决方法

你在Therapist Models中定义了__construct()方法,不是吗?
我猜你错过了$attributes param:

public function __construct($attributes = array())
{
    parent::__construct($attributes);
    //do your construction stuff
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读