【问题标题】:Calling a function inside a function [PHP, Laravel, Eloquentl]在函数内部调用函数 [PHP, Laravel, Eloquent]
【发布时间】:2016-07-01 19:13:45
【问题描述】:

我正在使用基于 Laravel 构建的 October CMS,但我遇到了一些奇怪的问题,我不知道如何解释。

代码示例 1:工作正常(组件 EstateList)

public function onRun()
{
  $this->listEstates();
}

/**
 * Pulls all the estates from the model
 *
 * @return $estateList
 */
protected function listEstates()
{
  $estateList = RealEstate::all();

  return $estateList;
}

代码示例 2:不起作用(组件 EstateDetails)

public function onRun()
{
  $this->show();
}

/**
 * Returns the slug and display individual Estate Object
 *
 * @return $pageDetails
 */
 protected function show()
 {
   $slug = $this->param('slug');
   $pageDetails = RealEstate::find($slug);

   echo $slug; //returns slug as it should
   echo $pageDetails; //empty

   if ($pageDetails) {
     return $pageDetails;
   } else {
     return \Response::make('Page not found', 404);
   }
 }

如果我只是将 show() 的代码放入函数 onRun() 中,它就可以正常工作。如果在单独的函数 show() 中运行,为什么 echo echo $pageDetails代码示例 2 上返回空?

感谢您的帮助。

【问题讨论】:

    标签: php laravel eloquent octobercms


    【解决方案1】:

    尝试将其更改为RealEstate::where('slug', '=', $slug)->firstOrFail();find 位在 ID 表中搜索列,而不是 slug。

    【讨论】:

      【解决方案2】:

      您没有“返回”来自show() 的回复

      尝试将$this->show(); 更改为在onRun() 中返回return $this->show();

      【讨论】:

        【解决方案3】:

        尝试将您的代码更改为此

        public function onRun()
        {
          return  $this->show();
        }
        
        /**
         * Returns the slug and display individual Estate Object
         *
         * @return $pageDetails
         */
         protected function show()
         {
           $slug = $this->param('slug');
           $pageDetails = RealEstate::where('slug', '=', $slug)->firstOrFail();;
        
           echo $slug; //returns slug as it should
           echo $pageDetails; //empty
        
           if ($pageDetails) {
             return $pageDetails;
           } else {
             return \Response::make('Page not found', 404);
           }
         }
        

        希望这能解决您的问题

        【讨论】:

          猜你喜欢
          • 2014-09-11
          • 1970-01-01
          • 2015-01-22
          • 1970-01-01
          • 2020-04-26
          • 2012-01-12
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多