Php 如何在laravel中将模型函数调用到我的控制器中

Php 如何在laravel中将模型函数调用到我的控制器中,php,laravel,laravel-5,Php,Laravel,Laravel 5,我在App文件夹中有一个名为Models的model文件夹,在这个文件夹中我创建了一个UserModel,我的控制器位于App/Http/controller文件夹名UserController中。如何将我的UserModel调用到UserController中 我试过下面的代码 我的控制器UserController.php:它位于App/Http/Controller文件夹中 <?php namespace App\Http\Controllers; use Illumi

我在App文件夹中有一个名为Models的model文件夹,在这个文件夹中我创建了一个UserModel,我的控制器位于App/Http/controller文件夹名UserController中。如何将我的UserModel调用到UserController中

我试过下面的代码

我的控制器UserController.php:它位于App/Http/Controller文件夹中

    <?php 

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\DB;
use App\User;
use App\Models;


class UsersController extends Controller {

    public function __construct(){
        $users = new UserModel();
    }

    public function index(){
        $user_id = $_GET['id'];
        $token = $_GET['token'];
        $userInfo = $this->users->getUserInformation($user_id); 
        return view('profile.users')->with('user_details', $userInfo);
    }

}

因为
$this->users
正在返回一个集合,所以您必须循环它,然后在其中调用您的模型函数

foreach($this->users as $user){
     $userInfo = $user->getUserInformation($user_id);
}

///

你做得对,只是小小的调整,你就可以开始了: 控制器中的
$users
变量必须正确声明为可供所有方法访问,因此请将控制器更新为:

<?php 

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\DB;
use App\User;
use App\Models\UserModel;


class UsersController extends Controller {
    protected $users;
    public function __construct(){
        $this->users = new UserModel();
    }

    public function index(){
        $user_id = $_GET['id'];
        $token = $_GET['token'];
        $userInfo = $this->users->getUserInformation($user_id); 
        return view('profile.users')->with('user_details', $userInfo);
    }

}

我认为最好的方法是利用Laravel的依赖注入,将依赖直接注入控制器方法:

class UsersController extends Controller {


    public function index(UserModel $users, Request $request){
        //Using the request object is recommended
        $user_id = $request->input('id');
        $token = $request->input('token');
        $userInfo = $users->getUserInformation($user_id); 
        return view('profile.users')->with('user_details', $userInfo);
    }

}

你应该认真阅读文档,让你的风格更像拉威尔

控制器:

视图:

用户id为:{{$User->id}

如果您愿意这样做

<?php 
namespace App\Models;
use Illuminate\Database\Eloquent\Model;

class UserModel extends Model
{
    public function getUserInformation(){
        return "User id is : ".$this->id;
    }   
}
?>

内部控制器

<?php 

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\DB;
use App\UserModel;
use App\Models;


class UsersController extends Controller {

    public function index(){
        $user_id = $_GET['id'];
        $token = $_GET['token'];
        $user = UserModel::find($user_id);
        $userInfo = $user->getUserInformation(); 
        return view('profile.users')->with('user_details', $userInfo);
    }

}

您包括App\User,但使用的是usermodel您是如何调用您的用户模型的?用户还是用户模型?您是否尝试过这个
UserModel::getUserInformation($id)?请
使用App\Models\UserModel您是否已修复此问题?是的,我已修复,方法是将模型文件移动到应用程序根文件夹。
Route::get('users/{user}', 'UsersController@show');
<span>User id is : {{ $user->id }}</span>
<?php 
namespace App\Models;
use Illuminate\Database\Eloquent\Model;

class UserModel extends Model
{
    public function getUserInformation(){
        return "User id is : ".$this->id;
    }   
}
?>
<?php 

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\DB;
use App\UserModel;
use App\Models;


class UsersController extends Controller {

    public function index(){
        $user_id = $_GET['id'];
        $token = $_GET['token'];
        $user = UserModel::find($user_id);
        $userInfo = $user->getUserInformation(); 
        return view('profile.users')->with('user_details', $userInfo);
    }

}