2016-05-24 14 views
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'); 
    } 

Got error: BadMethodCallException in Macroable.php line 81: Method tuser does not exist.

//私は

$tpost ->save(); 

//simply inserted into database //I thought I failed to make relation between Tuser and Tpost models. In PostController.php, If I do dd($tpost->tuser()); then it returned an associative array as shown, but If do dd($request->tuser()); then it says Method tuser does not exist. please Help....

答えて

1

を使用している場合あなたが「問題がある」書く正確にあなたのメソッド呼び出しのタイプミスを持っています。読み込みする必要があります。

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

Edit--

をエラーメッセージから判断すると、それはLaravelはあなたが明らかに「doesnの$要求インスタンス上TUSER()メソッドのために求めていると考えることはかなり明らかです存在しない。

あなたが使用することができます:

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

これが機能しない場合、私は設定/ auth.phpファイルがあなたの特定の使用の場合、特にユーザーのプロバイダセクションを反映していることを確認することをお勧めしたいです。

+0

ty!それを修正しましたが、同じ問題@alex – CodeLove

関連する問題