用户和他们的帖子之间的关系失败....!

时间:2016-05-24 18:15:14

标签: php laravel-5.2

PostController.php

<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Http\Requests;
use App\Tpost;

class PostController extends Controller
{
   public function createUserPost(Request $request){

     $this->validate($request,[
      'post'=>'required'
      ]);
     $tpost =new Tpost();
     $tpost->body =$request['post'];
     $message = "something wrong";

     if($request->tuser()->tposts()->save($tpost))   //problem is there
     {
      $message = "post Successfully Submited";
     }
     return redirect()->route('dashboard')->with('message',$message);
   }
} 

Tpost.php

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

class Tpost extends Model
{
    //
    public function tuser(){
     return $this->belongsTo('App\Tuser');
    }
}

Tuser.php

<?php

namespace App;
use Illuminate\Contracts\Auth\Authenticatable;
use Illuminate\Database\Eloquent\Model;

class Tuser extends Model  implements  Authenticatable
{
    use \Illuminate\Auth\Authenticatable;

    public function tposts(){
     return $this->hasMany('App\Tpost');
    }
  

收到错误:Macroable.php第81行中的BadMethodCallException:方法   tuser不存在。

//如果我使用

$tpost ->save();
  

//简单地插入数据库//我以为我没有建立关系   在Tuser和Tpost模型之间。   在PostController.php中,如果我dd($tpost->tuser());,它返回一个关联数组,如图所示,但如果dd($request->tuser());,则表示方法tuser不存在。   请帮帮....

1 个答案:

答案 0 :(得分:1)

你的方法调用中有一个拼写错误,正是在你写“问题就在那里”的地方。它应该是:

if($request->tuser()->tposts()->save($tpost))

编辑 -

从错误消息判断,很明显Laravel认为你在$ request实例上要求tuser()方法,这显然不存在。

你能用:

Auth::user()->tposts()->save($tpost)

如果这不起作用,我建议确保config / auth.php文件反映您的特定用例,特别是User Providers部分。