在函数内部调用函数[PHP,Laravel,Eloquentl]

时间:2016-07-01 19:13:45

标签: php laravel eloquent octobercms

我正在使用基于Laravel的10月CMS,我有一些奇怪的问题,我不知道如何解释。

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

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

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

  return $estateList;
}

代码示例2:不起作用(Component 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()函数中,它就可以了。为什么echo echo $pageDetails代码示例2 上返回为空,如果它是在单独的函数show()中运行的。

感谢您的帮助。

3 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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

的回复

尝试在$this->show();

中更改return $this->show();以返回onRun()

答案 2 :(得分:-1)

尝试将代码更改为此

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);
   }
 }

希望这可以解决您的问题