Я знаю, где возникает следующая ошибка, но я не знаю, как ее исправить.Laravel отношение поиск функция
Ошибка:
SQLSTATE[42S22]: Column not found: 1054 Unknown column 'expenses.date' in 'where clause' (SQL: select count(*) as aggregate from
expenses_sections
whereexpenses
.date
LIKE %2015-12%)
Что вызывает это (в моем контроллере):
if($view === 'section') {
$query = Section::query();
$query->with(['expenses' => function($query) use ($search){
$query->where('date', 'LIKE', '%2015-' . $search . '%')->get();
}]);
}
У меня есть меню выбора, который я использую, чтобы изменить макет страницы. У меня есть другое меню, которое я использую для отображения результатов только с определенного месяца. Вышеупомянутая ошибка - это то, что я получаю, когда я выбираю месяц, потому что запрос ищет неправильную таблицу (из-за вышеприведенного кода). Результаты отображаются с использованием соотношения между расходами и разделами. В основном я хочу искать результаты в таблице expenses
вместо таблицы expenses_sections
, конечно, не нарушая отношения, потому что на основе отношения отображается мой макет.
расходов Модель:
class Expense extends Model
{
public function section()
{
return $this->belongsTo('App\Http\Models\Expenses\Section');
}
}
Раздел Модель:
class Section extends Model
{
public function expenses()
{
return $this->hasMany('App\Http\Models\Expenses\Expense');
}
}
Имеет ли 'счет' поле' date'? –
Если у вас есть costs_sections, у которого есть расходы_id и section_id, вы должны использовать hasManyThrough(), но я всегда стараюсь получить эти рабочие в первый раз, вместо того, чтобы пытаться ответить на него, прочитать это в ожидании лучшего ответа: http: //laravel.com/docs/5.1/eloquent-relationships#has-many-through – markdwhite
Удивительно, лучше, конечно, прочесть его самостоятельно, вместо того чтобы получить ответ, который я могу использовать сразу, поэтому я благодарю вас! :) – Hardist