Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
Страницы 1
День добрый,
Модель:
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;
class Object extends Model {
use SoftDeletes;
protected $table = 'objects';
protected $fillable = array('price', 'add', 'imageable_type', 'imageable_id');
public function imageable()
{
return $this->morphTo();
}
}
class Items extends Model {
public $timestamps = false;
protected $table = 'objects_kv';
protected $fillable = array('images', 'table');
public function imageable()
{
return $this->morphMany('App\Models\Object', 'imageable');
}
}
В контроллере:
$obj = Object::find($id);
return $obj->imageable;
В таблице в поле imageable_type(varchar) стоит: Items
Но происходит ошибка:
Class 'Items' not found
Почему класс этот не видит?
Появился ещё вопрос, как вывести все записи? и почему Object::find($id) не содержит сразу imageable
$objs = Object::all();
$arr = array();
foreach ($objs as $obj) {
$arr[] = array_merge((array)$obj, (array)$obj->imageable);
}
return $arr;
Object::with('imageable')->get();
Не в сети
А поиск в imageable как совершить?
Данный код не работает
$res = Object::where('imageable_type', '=', 'Objects_kv')
->whereBetween('price', [110, 150])
->with(['imageable' => function($query){
$query->where('table', '=', '1');
}])
->get();
в laravel debug даже намёка нет на where('table', '=', '1');
select * from `objects` where `objects`.`deleted_at` is null and `imageable_type` = 'Objects_kv' and `price` between '110' and '150'1mstria
select * from `objects_zem` where `id` in ('1')
Страницы 1