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

时间:2019-03-12 06:15:04

标签: php laravel laravel-5

我在App文件夹中有一个名为Models的模型文件夹,在此文件夹中我创建了一个UserModel,我的控制器位于App / Http / Controller文件夹名称UserController中。我是laravel的新手,任何人都可以让我知道如何将我的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);
    }

}

和我的模型: UserModel.php ,它位于App / Models文件夹中。

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

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

请提出正确的代码,以便我可以继续进行下去。 谢谢你。

3 个答案:

答案 0 :(得分:1)

因为$this->users返回一个集合,所以您将不得不对其进行循环,然后在其中调用模型函数。

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

///

答案 1 :(得分:0)

我认为最好的方法是利用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);
    }

}

答案 2 :(得分:0)

如果您愿意这样做

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

}

请尝试让我知道。