Controller.php第82行中的BadMethodCallException:laravel

时间:2017-03-28 05:06:19

标签: php laravel-5

模型代码如下所列

?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class monthlyActivity extends Model
{
    protected $table = 'monthly_activities';
}

和控制器是 命名空间App \ Http \ Controllers;

use Illuminate\Http\Request;

class monthlyActivity extends Controller
{
    //

    public function show()
    {
        $monthly = monthlyActivity::all();
        return view('show',['monthly' => $monthly]);
    }
}

show.blade文件位于

之下
<tbody>
                <?php
                foreach($monthly as $mon)
                {
                        ?>
                        <tr>
                            <td>
                            <?php echo $mon->id ?>
                            </td>
                            <td>
                            <?php echo $mon->year ?>
                            </td><td>
                            <?php echo $mon->id ?>
                            </td>
                            <td>
                            <?php echo $mon->id ?>
                            </td><td>
                            <?php echo $mon->id ?>
                            </td><td>
                            <?php echo $mon->id ?>
                            </td><td>
                            <?php echo $mon->id ?>
                            </td>
                        </tr>

                        <?php

                }
                ?>
以下路线文件中的

是此特定页面的提及路线

  

路由:: get(&#39; show&#39;,&#39; monthlyActivity @ show&#39;);

我收到控制器中声明的全部中的错误,我不知道如何解决此错误

2 个答案:

答案 0 :(得分:1)

模型名称在Laravel中的camelCase中,但第一个字母大写除外,因此您的模型名称应为:MonthlyActivity,因此在您的模型更改行中:

class monthlyActivity extends Model

class MonthlyActivity extends Model

然后还将模型的文件名更改为MonthlyActivity.php

现在关于控制器,它不是一个严格的规则,但建议你在名称中添加一个控制器后缀。它可以帮助您避免这些名称冲突,它们的名称也应该从大写字母开始,所以我建议您将控制器名称更改为:

class MonthlyActivityController extends Controller

将控制器文件名更改为:MonthlyActivityController.php

现在您将在控制器中使用:

$monthly = MonthlyActivity::all();

确保在控制器顶部包含模型:

use App\MonthlyActivity;

将您的路线更改为:Route::get('show', 'MonthlyActivityController@show');

然后运行:

composer dump-autoload

现在试试你的程序,它应该按预期工作。

答案 1 :(得分:0)

您对控制器和型号使用相同的名称。所以错误就在这里:

$monthly = monthlyActivity::all();

由于名称冲突而尝试在all()类中查找controller函数的行。因此,更改模型的名称或使用模型的全名空间来区分它。