私のコードは次のようである:Relationship Existenceのクエリでフィールドとオーダーを選択するにはどうすればいいですか? Laravel 5.3
はpublic function getFavoriteStore($param)
{
$num = 20;
$q = $param['q'];
$location = $param['location'];
$result = $this->store_repository->whereHas('favorites', function ($query) use($q, $location) {
$query->select('stores.id', 'stores.name', 'stores.photo','stores.address')
->where('stores.status', '=', 1)
->where('favorites.favoritable_type', 'like', 'App\\\Models\\\Store');
if($location)
$query->where('stores.address', 'like', "%$location%");
if($q) {
$query->where('stores.name', 'like', "%$q%")
->where('stores.address', 'like', "%$q%", 'or');
}
$query->orderBy('favorites.updated_at', 'desc');
})->paginate($num);
return $result;
}
それは
はまた、上記のクエリは、私が唯一のいくつかのフィールドを選択動作しないことにより、順序、
を動作しますが。私はすべてのフィールドに
を問い合わせ、結果表示をデバッグするとき、それは私を助けることができる誰もがあります
間違っが残っているようですか?私はこのチュートリアルに従う:https://laravel.com/docs/5.3/eloquent-relationships#querying-relationship-existence
UPDATE
私のお気に入りのモデルは、このようなものです:
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class Store extends Model
{
protected $fillable = ['name', 'address', 'phones', 'address', 'email'];
public function favorites()
{
return $this->morphMany(Favorite::class, 'favoritable');
}
}
お気に入り:
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class Favorite extends Model
{
protected $fillable = ['user_id', 'favoritable_id', 'favoritable_type'];
public function favoritable()
{
return $this->morphTo();
}
}
マイストアモデルは、このようなものですテーブルにはフィールドiがありますD、USER_ID、favoritable_id、favoritable_type
店舗テーブルのフィールドID、名前、住所、電話、ADDRES、電子メール、写真
店やお気に入りの間の関係は、ID(storesテーブル)とfavoritable_id(お気に入りテーブル)です持っています
Laravelデバッグバーを使用して、実際に生成されたSQLを確認し、そこから移動します。 –
店舗とお気に入りの関係は? –