2016-06-18 6 views
0

Я хочу сделать что-то вроде этого:Laravel - как изменить таблицу в методе orWhere?

$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» метод? Это возможно? Если нет - как использовать 2 таблицы в одном запросе?

схемы (Status):

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(); 

вы можете поделиться больше информации, потому что у меня есть ощущение, что они могут быть достигнуты простым способом с использованием отношений (показать структуру и отношения базы данных в ваших моделях)

+0

Спасибо за ваш комментарий, но это дает мне сообщение об ошибке «Вызов неопределенного метода Illuminate \ Database \ Query \ Builder :: table()». – Patrick1870

Смежные вопросы