Ich versuche, eine Suchanfrage zu machen, die in Diensten Titel, Beschreibungen und Firmennamen (Unternehmen hat Dienstleistungen, wenn Firmenname übereinstimmt, gibt es die Dienste zurück).Laravel Suchabfrage
Ich habe ein Suchfeld, das an meine Steuerung weitergegeben wird. Ich habe es so versucht:
$query = Service::select('id','company_id','title','description',price);
$search = $request->input('search',null);
$query = is_null($search) ? $query : $query->where('title','LIKE','%'.$search.'%')->orWhere('description','LIKE','%'.$search.'%')->orWhereHas('company', function ($q) use ($search)
{
$q->where('name','LIKE','%'.$search.'%')->get();
});
$services= $query->paginate(5);
Aber ich erhalte eine Fehlermeldung, dass Unbekannte Spalte 'services.company_id' in 'where clause' (SQL: select * from companies
wo services
company_id
= companies
id
und name
.. LIKE% xx% und companies
. deleted_at
ist null)
Wie soll ich diese Suche durchführen?
Danke!
Update:
class Service extends Model
{
use SoftDeletes;
protected $dates = ['deleted_at'];
public function company() {
return $this->belongsTo('Company');
}
}
class Company extends Model
{
use SoftDeletes;
protected $dates = ['deleted_at'];
public function services() {
return $this->hasMany('Service');
}
}
Schema::create('services', function (Blueprint $table) {
$table->increments('id');
$table->integer('company_id');
$table->integer('service_category_id');
$table->integer('server_id');
$table->string('title');
$table->string('description');
$table->string('icon');
$table->boolean('accepts_swaps');
$table->integer('qty_available');
$table->double('price_usd', 10, 6);
$table->timestamps();
$table->softDeletes();
});
Schema::create('companies', function (Blueprint $table) {
$table->increments('id');
$table->integer('owner_id');
$table->string('name');
$table->string('email');
$table->string('paypal_email')->nullable();
$table->string('skrill_email')->nullable();
$table->string('contact_email')->nullable();
$table->string('phone')->nullable();
$table->integer('city_id')->nullable();
$table->string('short_description')->nullable();
$table->text('description')->nullable();
$table->integer('subscription_id')->nullable();
$table->timestamp('subscription_end_date')->nullable();
$table->string('avatar')->default("img/default/user-avatar-128.min.png");
$table->integer('highlighted_game_id')->nullable()->default(null);
$table->timestamps();
$table->softDeletes();
});
Sie haben 'company_id' Spalte in' companies' Tabelle? – piotr
Können Sie Ihr Tabellenschema und Beziehungen in Ihrer Frage zeigen? –
aktualisiert, bitte überprüfen Sie es. Vielen Dank! – user3844579