2016-06-18 3 views
0

私はこのような何かやりたい:Laravel - どのようにテーブルを変更するのか?

$posts= Status::where('users_id',$user->id)->orWhere(DB::table('user_status_share.user_id', $user->id))->orderBy('created_at', 'DESC')->get(); 

をしかし、私はエラーを取得しています:strtolower()は、パラメータ1は、文字列、指定されたオブジェクトであることを期待 - 私は「orWhere」でテーブルを変更する方法方法?これは可能ですか?そうでない場合 - 1つのクエリで2つのテーブルを使用する方法

スキーマ(ステータス):

public function up() 
{ 
    Schema::create('users_status', function (Blueprint $table) { 
     $table->increments('id')->unique(); 
     $table->longText('status_text'); 
     $table->integer('users_id')->unsigned(); 
     $table->timestamps(); 
    }); 
} 

/** 
* Reverse the migrations. 
* 
* @return void 
*/ 
public function down() 
{ 
    Schema::drop('users_status'); 
} 

スキーマ(StatusShare):

public function up() 
{ 
    Schema::create('user_status_share', function (Blueprint $table) { 
     $table->increments('id'); 
     $table->integer('status_id'); 
     $table->integer('user_id'); 
     $table->timestamps(); 
    }); 
} 

/** 
* Reverse the migrations. 
* 
* @return void 
*/ 
public function down() 
{ 
    Schema::drop('user_status_share'); 
} 

モデルステータス:

namespace App\Eloquent; 

use Illuminate\Database\Eloquent\Model; 

class Status extends Model 
{ 
    public $timestamps = true; 
    protected $table = 'users_status'; 
    protected $guarded = ['id']; 

    public function comments() 
    { 
     return $this->hasMany(StatusComments::class); 
    } 

    public function likes() 
    { 
     return $this->hasMany(StatusLikes::class); 
    } 

    public function shares() 
    { 
     return $this->hasMany(StatusShare::class); 
    } 

} 

モデルStatusShare:

<?php 

namespace App\Eloquent; 

use Illuminate\Database\Eloquent\Model; 

class StatusShare extends Model 
{ 
    public $timestamps = true; 
    protected $table = 'user_status_share'; 
    protected $guarded = ['id']; 

    public function status() 
    { 
     return $this->hasOne(Status::class); 
    } 
} 
+0

bからデータを取得しますかothテーブル? – blablabla

+0

あなたのスキーマ構造と期待しているデータ形式を出力に投稿してください。 –

+0

はい、2つのテーブルからデータを取得したい – Patrick1870

答えて

0

私はあなたがそれを微調整

このような何かを試してみてください、私は

$posts = DB::table('status')->where('users_id',$user->id)->orWhere(function ($query) use ($user) { 
       $query->table('user_status_share')->where('user_id', $user->id); 
      }) 
      ->get(); 

私はその気持ちを持っているので、あなたがより多くの情報を共有することができ、それをテストdidntのだと思いますこれらは、関係を使って簡単な方法で到達することができます(モデル内のデータベース構造と関係を表示)

+0

をお寄せいただきありがとうございます。あなたのコメントありがとうございますが、これは "定義されていないメソッドイルミネーション\データベース\クエリ\ビルダー::テーブル()"を呼び出すエラーが発生します。 – Patrick1870

関連する問題