从控制器类 Laravel 访问模型方法

Pra*_*ngh 4 php laravel laravel-5

我是 Laravel 的新手,我在学习教程时正在尝试各种方法。这是我面临意外行为的地方。

我有一个模型tweet和一个名为tweetsController; 当我打电话tweet::find()或任何类似的方法时,我发现了这一点:

FatalErrorException in tweetsController.php line 13:
Class 'App\Http\Controllers\tweet' not found
Run Code Online (Sandbox Code Playgroud)

我也试过了App\tweet::find()。通过修补程序,一切似乎都很好。

请解释。

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

use App\Http\Requests;
use App\Http\Controllers\Controller;
class tweetsController extends Controller
{
    public function show(){
        $data = tweet::first()->tweetBody;
        return view('tweets.list',['passedData'=> $data]);
    }

    public function delete($id){
        return "here we dele the tweet ".$id;
    }

    public function add(){
        return "i add your tweet to database then show you all the tweets";
    }
}
Run Code Online (Sandbox Code Playgroud)

推文.php

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class tweet extends Model
{
    protected $fillable = array(
        'tweetHead',
        'tweetBody'
    );
}

?>
Run Code Online (Sandbox Code Playgroud)

Eli*_*ues 5

可能会产生此错误的几个选项:

  • 模型/控制器命名空间不正确;
  • 模型的文件名和类名需要是“Tweet”,首字母大写;
  • 如果您在模型“Tweet.php”上设置了正确的命名空间并将其导入您的“TweetController.php”

我希望有帮助:)


更新:

在 TweetController.php 中添加这个

use App\Tweet;
Run Code Online (Sandbox Code Playgroud)

在类声明之前,像这样

use App\Tweet;
class tweetsController extends Controller
{
Run Code Online (Sandbox Code Playgroud)

并记得像这样更改类声明中的控制器名称

class TweetsController extends Controller
    {
Run Code Online (Sandbox Code Playgroud)

控制器文件名将变为“TweetsController.php”

模型还必须在类声明和文件名中命名为“Tweet”而不是“tweet”

class tweet extends Model
Run Code Online (Sandbox Code Playgroud)

会变成

class Tweet extends Model
Run Code Online (Sandbox Code Playgroud)

该文件将被命名为“Tweet.php”

每次你需要调用模型时,你都会这样做

public function show(){
        $data = App\Tweet::first()->tweetBody;
        return view('tweets.list',['passedData'=> $data]);
    }
Run Code Online (Sandbox Code Playgroud)