Я использую Laravel 5 и у меня есть 3 таблицы базы данных projects
, applications
, users
и их структура таблицы, как следует:Laravel фильтр несколько таблиц данных
Проекты
Schema::create('projects', function (Blueprint $table) {
$table->increments('id');
$table->string('name');
$table->text('description');
$table->char('status',1);
$table->timestamps();
});
Приложения
Schema::create('applications', function (Blueprint $table) {
$table->increments('id');
$table->integer('project_id')->unsigned()->index();
$table->integer('user_id')->unsigned()->index();
$table->char('status');
$table->timestamps();
});
Пользователей
Schema::create('users', function (Blueprint $table) {
$table->increments('id');
$table->integer('role');
$table->string('name');
$table->string('email')->unique();
$table->string('password', 60);
$table->rememberToken();
$table->timestamps();
});
Теперь я хотел бы выполнить запрос, возвращающий все проекты, в которых конкретный пользователь не представил какое-либо приложение к этому проекту еще. Пока это самый близкий результат, который я мог бы получить, но он вернет NULL
в projects.id
для каждого проекта, у которого нет приложений.
DB::table('projects')
->leftjoin('applications', 'applications.project_id', '=', 'projects.id')
->where('applications.user_id', '!=', $user->id)
->orWhereNull('applications.id')
->get();
Результат запроса
{
"total":1,
"per_page":5,
"current_page":1,
"last_page":1,
"next_page_url":null,
"prev_page_url":null,
"from":1,"to":1,
"data":[{
"id":null,
"name":"Project2",
"description":"Project2 detail",
"status":null,
"created_at":null,
"updated_at":null,
"project_id":null,
"user_id":null
}]
}
ли кто-нибудь имеет решение этой проблемы?
этот запрос по-прежнему дает мне тот же результат с 'project.id' =' NULL' :( – Woody
как вы пытаетесь получить это значение – Chris
Извините, что вы подразумеваете под этим? Я не совсем понимаю ваш вопрос – Woody