Support owner_user_id schema for venues and vendor queries
فشلت بعض الفحوصات
Deploy Backend / deploy (push) Has been cancelled

هذا الالتزام موجود في:
Abdul Kareem
2026-02-19 15:55:13 +03:00
الأصل 0db3516d52
التزام 4ee662a0ae
4 ملفات معدلة مع 38 إضافات و8 حذوفات

عرض الملف

@@ -30,7 +30,7 @@ class ReservationController extends Controller
$query = Reservation::query() $query = Reservation::query()
->whereHas('venue', function ($q) use ($request) { ->whereHas('venue', function ($q) use ($request) {
$q->where('vendor_id', $request->user()->id); $q->where(Venue::ownerColumn(), $request->user()->id);
}) })
->with([ ->with([
'venue:id,name,type,address_text', 'venue:id,name,type,address_text',
@@ -86,7 +86,7 @@ class ReservationController extends Controller
$reservation = Reservation::query() $reservation = Reservation::query()
->where('id', $id) ->where('id', $id)
->whereHas('venue', function ($q) use ($request) { ->whereHas('venue', function ($q) use ($request) {
$q->where('vendor_id', $request->user()->id); $q->where(Venue::ownerColumn(), $request->user()->id);
}) })
->lockForUpdate() ->lockForUpdate()
->first(); ->first();
@@ -225,7 +225,7 @@ class ReservationController extends Controller
{ {
return Reservation::query() return Reservation::query()
->whereHas('venue', function ($q) use ($request) { ->whereHas('venue', function ($q) use ($request) {
$q->where('vendor_id', $request->user()->id); $q->where(Venue::ownerColumn(), $request->user()->id);
}) })
->find($id); ->find($id);
} }

عرض الملف

@@ -90,6 +90,7 @@ class VenueController extends Controller
public function store(Request $request) public function store(Request $request)
{ {
$user = $request->user(); $user = $request->user();
$ownerColumn = Venue::ownerColumn();
$validated = $request->validate([ $validated = $request->validate([
'name' => 'required|string|max:255', 'name' => 'required|string|max:255',
@@ -111,7 +112,7 @@ class VenueController extends Controller
]); ]);
$venue = Venue::create([ $venue = Venue::create([
'vendor_id' => $user->id, $ownerColumn => $user->id,
'name' => $validated['name'], 'name' => $validated['name'],
'type' => $validated['type'], 'type' => $validated['type'],
'description' => $validated['description'] ?? null, 'description' => $validated['description'] ?? null,
@@ -134,6 +135,7 @@ class VenueController extends Controller
// LIST VENUES (admin) // LIST VENUES (admin)
public function adminIndex(Request $request) public function adminIndex(Request $request)
{ {
$ownerColumn = Venue::ownerColumn();
$validated = $request->validate([ $validated = $request->validate([
'search' => 'nullable|string|max:255', 'search' => 'nullable|string|max:255',
'per_page' => 'nullable|integer|min:1|max:100', 'per_page' => 'nullable|integer|min:1|max:100',
@@ -142,7 +144,7 @@ class VenueController extends Controller
$query = Venue::query() $query = Venue::query()
->select([ ->select([
'id', 'id',
'vendor_id', DB::raw($ownerColumn . ' as vendor_id'),
'name', 'name',
'type', 'type',
'description', 'description',
@@ -240,11 +242,12 @@ class VenueController extends Controller
$venue = null; $venue = null;
DB::transaction(function () use ($validated, $vendorId, &$venue, $request) { DB::transaction(function () use ($validated, $vendorId, &$venue, $request) {
$ownerColumn = Venue::ownerColumn();
$imageUrls = $validated['image_urls'] ?? []; $imageUrls = $validated['image_urls'] ?? [];
$imageUrls = $this->appendUploadedImages($request, $imageUrls); $imageUrls = $this->appendUploadedImages($request, $imageUrls);
$venue = Venue::create([ $venue = Venue::create([
'vendor_id' => $vendorId, $ownerColumn => $vendorId,
'name' => $validated['name'], 'name' => $validated['name'],
'type' => $validated['type'], 'type' => $validated['type'],
'description' => $validated['description'] ?? null, 'description' => $validated['description'] ?? null,

عرض الملف

@@ -66,7 +66,7 @@ class User extends Authenticatable
public function venues() public function venues()
{ {
return $this->hasMany(Venue::class, 'vendor_id'); return $this->hasMany(Venue::class, Venue::ownerColumn());
} }
public function reservations() public function reservations()

عرض الملف

@@ -4,6 +4,7 @@ namespace App\Models;
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Support\Facades\Schema;
use App\Models\Reservation; use App\Models\Reservation;
use App\Models\SeatingArea; use App\Models\SeatingArea;
use App\Models\VenueTable; use App\Models\VenueTable;
@@ -11,9 +12,11 @@ use App\Models\VenueTable;
class Venue extends Model class Venue extends Model
{ {
use HasFactory; use HasFactory;
protected static ?string $resolvedOwnerColumn = null;
protected $fillable = [ protected $fillable = [
'vendor_id', 'vendor_id',
'owner_user_id',
'name', 'name',
'type', 'type',
'description', 'description',
@@ -34,9 +37,33 @@ class Venue extends Model
'offers' => 'array', 'offers' => 'array',
]; ];
public static function ownerColumn(): string
{
if (self::$resolvedOwnerColumn !== null) {
return self::$resolvedOwnerColumn;
}
self::$resolvedOwnerColumn = Schema::hasColumn('venues', 'vendor_id')
? 'vendor_id'
: 'owner_user_id';
return self::$resolvedOwnerColumn;
}
public function setVendorIdAttribute($value): void
{
$this->attributes[self::ownerColumn()] = $value;
}
public function getVendorIdAttribute()
{
$column = self::ownerColumn();
return $this->attributes[$column] ?? null;
}
public function vendor() public function vendor()
{ {
return $this->belongsTo(User::class, 'vendor_id'); return $this->belongsTo(User::class, self::ownerColumn());
} }
public function reservations() public function reservations()