Laravel Model Query - может использовать «Models: all ()», но «where / whereRaw» не возвращает данных - PullRequest
1 голос
/ 07 июля 2019

в Laravel PHP,

Я пытаюсь выполнить запрос к моделям, чтобы получить данные json, что здесь странно, я могу использовать только запрос типа Models:all(), но не могу использовать где.

для первого запроса

я могу использовать ниже запрос:

$models = SadaqahHistory::all();

вернет результаты:

{
    "status": 200,
    "message": "Success, user=25, date from=2019-07-01, end date=2019-07-31",
    "data": [
        {
            "id": 1,
            "user_id": 372,
            "month": 7,
            "year": 2019,
            "name": null,
            "point_total": 198,
            "total": 4580,
            "sadaqah_date": "2019-07-05 00:00:00",
            "status": 0,
            "is_dzikir": 0,
            "created_at": null,
            "updated_at": null
        },
        {
            "id": 2,
            "user_id": 1034,
            "month": 7,
            "year": 2019,
            "name": null,
            "point_total": 2,
            "total": 46,
            "sadaqah_date": "2019-07-05 00:00:00",
            "status": 0,
            "is_dzikir": 0,
            "created_at": null,
            "updated_at": null
        },
...

для второго запроса

Я не могу использовать запрос ниже, потому что вернет ноль / нет данных:

$models = SadaqahHistory::where('user_id', $user->id) ->whereRaw("DATE_FORMAT(sadaqah_date, '%Y-%m-%d') >= '$startDate' AND '$endDate'") ->actived() ->orderBy('sadaqah_date', 'desc') ->get();

не вернет никаких данных / null:

{
    "status": 200,
    "message": "Success, user=25, date from=2019-07-01, end date=2019-07-31",
    "data": []
}

=== Редактировать, Добавить SadaqahHistory Model:

namespace App;
class SadaqahHistory extends BaseModel
{
    const STATUS_CONVERT_FROM_POINT = 1;
    protected $table = 'sadaqah_history';

    protected $fillable = [
        'user_id',
        'name',
        'point_total',
        'total',
        'sadaqah_date',
        'status',
        'is_dzikir',
        'foundation_donate_id',
        'created_at',
        'updated_at',
        'created_by',
        'updated_by',
    ];
    protected $hidden = [
        'foundation_donate_id',
        'created_by',
        'updated_by'
    ];
    protected $casts = [
        'status' => 'int',
        'is_dzikir' => 'int',
        'point_total' => 'int',
        'total' => 'int',
        'user_id' => 'int',
        'foundation_donate_id' => 'int',
    ];
    public function __construct(array $attributes = array())
    {
        parent::__construct($attributes);
    }
    public function foundationDonate()
    {
        return $this->hasOne('\App\FoundationDonate', 'id', 'foundation_donate_id');
    }

Любая идея Почему мой второй запрос модели не сработает?

1 Ответ

2 голосов
/ 07 июля 2019

В соответствии с этим SQL вам нужно:

SELECT * FROM sadaqah_history WHERE user_id = 25 AND sadaqah_date BETWEEN '2019-06-01' AND '2019-06-30'

И если $startDate и $endDate имеют формат ГГГГ-ММ-ДД, вы должны использовать это:

$models = SadaqahHistory::where('user_id', $user->id)
      ->whereRaw("sadaqah_date BETWEEN '$startDate' AND '$endDate'")
      ->orderBy('sadaqah_date', 'desc')
      ->get();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...